Umwandlung der Strömungsfelddichte


8

Ich versuche, die Flussfeldnavigation zu implementieren, wie unter http://grail.cs.washington.edu/projects/crowd-flows/ beschrieben, aber ich kann nicht verstehen, wie die Dichtefunktion in Abbildung 4 des Dokuments funktionieren soll Einheitsradius.

Hat jemand das jemals implementiert und kann mehr Informationen liefern?

Dies ist der fragliche Teil:

Geben Sie hier die Bildbeschreibung ein

Ihr Algorithmus scheint nur 4 Zellen zu verwenden, die nach links unten in der Einheit zeigen. Ist dies also eine Art Kernel, der mehrmals angewendet werden muss?

Vielen Dank.


Weitere relevante Tags konnten aufgrund der Reputationsstufe nicht hinzugefügt werden.
Sharvey

Antworten:


3

Nein, es ist kein "Kernel, der mehrmals angewendet werden muss". Sie wenden die Formeln nur einmal wie geschrieben an.

Es ist jedoch eine seltsame Regel und nicht sehr klar beschrieben. Lassen Sie mich versuchen, es ein wenig zu klären:

  • Suchen Sie zunächst die vier Zellen, deren gemeinsame Ecke der Einheit am nächsten liegt. Die Einheit trägt nur zu diesen Zellen eine Dichte ungleich Null bei. Nennen Sie diese Zellen A, B, C und D wie in Abbildung 4 (b).

  • Sei Δx und Δy der horizontale und vertikale Abstand der Einheit vom Zentrum der Zelle A, gemessen in Einheiten einer Zellenbreite / -höhe.

  • Lassen ρ A = min (1 & Dgr; x, 1-& Delta; y) λ , ρ B = min (& Delta; x, 1-& Delta; y) λ , ρ C = min (& Delta; x, & Delta; y) λ und ρ D = min (1-& Delta; x, & Delta; y ) λ , wie in der Veröffentlichung beschrieben.

  • Lassen Sie die Einheit ρ A- Dichte zu Zelle A, ρ B- Dichte zu Zelle B, ρ C- Dichte zu Zelle C und ρ D- Dichte zu Zelle D beitragen .

Wie gesagt, die Regel ist irgendwie komisch, und ich habe keine offensichtliche geometrische Interpretation dafür anzubieten. Es erfüllt jedoch die erwarteten Eigenschaften, die:

  • Wenn sich die Einheit genau in der Mitte einer Zelle X befindet, trägt sie (unabhängig davon, für welche von A, B, C oder D wir X wählen) 1 λ = 1 Dichteeinheit zu Zelle X und 0 Dichteeinheiten zu jede andere Zelle.

  • Wenn sich die Einheit genau an der Ecke von vier Zellen befindet, trägt sie (1/2) λ Dichteeinheiten zu jeder der vier Zellen bei (und per Definition zu keiner anderen Zelle).

Es ist jedoch zu beachten, dass unter Verwendung dieser Regel die Gesamtdichte, die eine Einheit zu allen Zellen beiträgt, nicht konstant ist, auch wenn λ = 1. Insbesondere wenn sich die Einheit genau am Mittelpunkt der Kante zwischen zwei Zellen befindet, es trägt (1/2) λ Dichteeinheiten zu diesen beiden Zellen bei und nichts zu irgendeiner anderen Zelle. Daher erscheint es etwas irreführend, den resultierenden Wert als "Dichte" zu bezeichnen.


Bearbeiten: Eine andere Möglichkeit, die Formeln für ρ A , ρ B , ρ C und ρ D zu schreiben , die die Symmetrie der Definitionen deutlicher machen können, besteht darin, d X = max (| x - x X |, | y - zu definieren y X |) als Schachbrettabstand der Einheit bei (x, y) von der Mitte der Zelle X bei (x X , y X ), gemessen in Zellenbreiten / -höhen. Dann für jede Zelle X,

  • ρ X = 0, wenn d X ≥ 1 ist, und
  • ρ X = (1 - d X ) λ sonst.

Ich verstehe nicht, warum die Zellen unten links neben denen, in denen sich der Agent befindet, einen Dichtewert erhalten sollten, während die Zellen oben rechts dies nicht sollten.
Sharvey

@sharvey: Weil sich der Agent auf dem Bild unten und links von der Mitte der Zelle befindet, in der er sich befindet.
Ilmari Karonen

Ah, das macht Sinn. Aber um ganz klar zu sein, der Radius der Einheit hat nichts mit der Dichteberechnung zu tun, oder?
Sharvey

Richtig, in den von Ihnen angegebenen Formeln scheint es keinen "Radius" zu geben, der in diese Berechnungen einfließen könnte.
Ilmari Karonen

Ich bin nicht näher dran, es tatsächlich umzusetzen, aber danke für die Antwort. Ich schätze, ich werde die Zeitung noch einmal lesen.
Sharvey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.