Pregunta

Estoy trabajando con una aplicación de mapeo (Worldwind) e intento determinar las latitudes y longitudes mínimas y máximas que se muestran actualmente. Tengo acceso al frustum, pero no estoy seguro de cómo dar cuenta del hecho de que el globo puede tener su encabezado y/o presentación cambiados. Cualquier ayuda en este problema sería apreciada.

Gracias,

Jeff

¿Fue útil?

Solución

En realidad, el frustum no es lo más útil en este contexto. Lo que necesita hacer es revertir la transformación ModelView-Project.

Si puede recuperar su proyección (frustum) y Matrices de visión del modelo, luego puede invertirlas. Si proyecta un rayo de la posición de su cámara espacio de proyección, entonces puedes usar esas inversiones para encontrar ese rayo en espacio mundial. A partir de ahí, puede cruzar ese rayo con su mundo para encontrar el punto exacto en el que ese rayo golpea al mundo.

Haga esto para las cuatro esquinas de la pantalla y luego calcule su cuadro de límite 2D en función de esas coordenadas de intersección.

Otros consejos

¿Qué estás tratando exactamente de calcular? Puntos de esquina de su ventana o el de su globo. Recuerde que un círculo no tiene esquinas (ni una esfera). ¿Has visto la herramienta Minimap en Worldwind (WorldMaplayer)? Muestra la extensión actualmente visible como una superposición en el minimap, esto puede darle una idea para resolver lo que se muestra exactamente.

Es bueno ver preguntas sobre viento mundial que fluyen en todas partes. No debemos estar haciendo un trabajo lo suficientemente bueno en los foros.

Los casos de esquina (1) de mi propuesta anterior están dificultando el algoritmo (nunca he tenido que alejar del mundo y aún no entiendo por qué aún no usas el hemisferio en ese caso), Así que aquí hay otro método que puede funcionar.

Tome su proyección frustum como un objeto 3D y intersectarlo con el globo (como un objeto 3D). Hay una variedad de algoritmos CSG que pueden darle unión, intersección y diferencia. Use la intersección. Esto dará como resultado una malla 3D de las piezas del mundo que se cruzan con el frustum. Las extensiones de esa malla son la extensión del cuadro delimitador. (Proyecto a lo largo del eje principal del frustum).

Esto es horriblemente menos eficiente que mi propuesta anterior. :-)

(1) juego de palabras completamente previsto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top