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:
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.
Antworten:
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,
quelle