Conversión de densidad de campo de flujo

8

Estoy tratando de implementar la navegación de campo de flujo, como se describe en http://grail.cs.washington.edu/projects/crowd-flows/ pero no puedo entender cómo se supone que debe manejar la función de densidad en la Figura 4 del documento radio de la unidad

¿Alguien ha implementado eso y puede proporcionar más información?

Esta es la parte en cuestión:

ingrese la descripción de la imagen aquí

Su algoritmo parece estar usando solo 4 celdas, apuntando a la parte inferior izquierda de la unidad, entonces, ¿es este algún tipo de núcleo que debe aplicarse varias veces?

Gracias.

Sharvey
fuente
No se pudieron agregar etiquetas más relevantes debido al nivel de reputación.
Sharvey

Respuestas:

3

No, no es un "núcleo que debe aplicarse varias veces". Simplemente aplica las fórmulas tal como están escritas, una vez.

Sin embargo, es una especie de regla extraña, y no se describe muy claramente. Déjame intentar aclararlo un poco:

  • Primero, encuentre las cuatro celdas cuya esquina compartida está más cerca de la unidad. La unidad contribuirá con una cantidad de densidad distinta de cero solo a esas celdas. Llame a esas celdas A, B, C y D como en la figura 4 (b).

  • Deje Δx y Δy ser la distancia horizontal y vertical de la unidad desde el centro de la celda A, medida en unidades de un ancho / alto de celda.

  • Sea ρ A = min (1 − Δx, 1 − Δy) λ , ρ B = min (Δx, 1 − Δy) λ , ρ C = min (Δx, Δy) λ y ρ D = min (1 − Δx, Δy ) λ , como se describe en el documento.

  • Deje que la unidad contribuya con la densidad ρ A a la celda A, la densidad ρ B a la celda B, la densidad ρ C a la celda C y la densidad ρ D a la celda D.

Como dije, la regla es un poco extraña, y no tengo una interpretación geométrica obvia que ofrecer. Sin embargo, satisface las propiedades esperadas que:

  • Cuando la unidad está exactamente en el medio de cualquier celda X, entonces (independientemente de cuál de A, B, C o D elijamos que sea X) contribuye 1 λ = 1 unidad de densidad a la celda X y 0 unidades de densidad a Cualquier otra celda.

  • Cuando la unidad está exactamente en la esquina de cuatro celdas, contribuye (1/2) λ unidades de densidad a cada una de las cuatro celdas (y nada a ninguna otra celda, por definición).

Sin embargo, tenga en cuenta que, utilizando esta regla, la cantidad total de densidad aportada por una unidad a todas las celdas no es constante, ni siquiera si λ = 1. En particular, cuando la unidad está exactamente en el punto medio del borde entre dos celdas, contribuye (1/2) λ unidades de densidad a esas dos celdas, y nada a ninguna otra celda. Por lo tanto, llamar al valor resultante una "densidad" parece un poco engañoso.


Editar: Otra forma de escribir las fórmulas para ρ A , ρ B , ρ C y ρ D , que puede hacer más aparente la simetría de las definiciones, es definir d X = max (| x - x X |, | y - y X |) como la distancia del tablero de ajedrez de la unidad en (x, y) desde el centro de la celda X en (x X , y X ), medida en anchos / alturas de celda. Entonces, para cualquier celda X,

  • ρ X = 0 si d X ≥ 1, y
  • ρ X = (1 - d X ) λ de lo contrario.
Ilmari Karonen
fuente
No entiendo la razón por la cual las celdas inferiores a la izquierda adyacentes a la del agente deben recibir un valor de densidad, mientras que las celdas superiores a la derecha no.
sharvey
@sharvey: Porque en la imagen, el agente está debajo ya la izquierda del centro de la celda donde está.
Ilmari Karonen
Ah, tiene sentido. Pero para ser claros, el radio de la unidad no tiene nada que ver con el cálculo de la densidad, ¿verdad?
sharvey 01 de
Correcto, no parece haber ningún "radio" en las fórmulas que citó que pueda entrar en esos cálculos.
Ilmari Karonen 01 de
No estoy más cerca de implementarlo, pero gracias por la respuesta. Supongo que volveré a leer el periódico.
sharvey