Al mapear la superficie de una esfera con mosaicos, ¿cómo podría lidiar con la distorsión polar?


24

Es fácil lidiar con la forma en que las ubicaciones interactúan en una cuadrícula cartesiana limpia. Es solo matemática de vainilla. Y puede ignorar la geometría de la superficie de la esfera por un montón si solo quiere truncar los polos o algo así. Pero sigo ideando ideas para juegos en los que el espacio polar es importante. ARG geocodificados y roguelikes globales y otras cosas.

Quiero ubicaciones cuadradas (¿ish?), Razonablemente representables por mosaicos cuadrados del mismo tamaño en todo el mundo, de todos modos.

Esto tiene que ser un problema resuelto, ¿verdad?

¿Cuáles son las soluciones?

ETA:

En el ecuador, y suponiendo que sus ubicaciones cuadradas sean razonablemente pequeñas, es lo suficientemente cercano como para que pueda salirse con la suya teniendo un cuadrado en las filas norte y sur de la fila más ecuatorial. Y probablemente podría salirse con la suya simplemente agitando la diferencia a 45 grados más o menos. Pero eventualmente, necesita tener menos cuadrados en una fila circunferencial de la pole pole. Si reduzco la longitud de la fila en uno y compensa los cuadrados en 1/2, entonces son como hexágonos y es relativamente fácil hacer la codificación para realizar un seguimiento de las conexiones. Pero a medida que te alejas del poste, se vuelve cada vez más extremo.

Proyectar la superficie del mundo sobre la superficie de un cubo es tentador. Pero supuse que ya debería haber soluciones más elegantes en uso.

Si hice lo del cubo (sin diseccionarlo más a través de la geodesia) ¿Hay ventajas y desventajas relacionadas con colocar el poste en el centro de una cara o en el vértice de tres lados?


1
¿Podría explicar qué quiere decir con "cuadrado (ish)"? ¿Qué tan cuadrado es "cuadrado (ish)"?
Steve H

Respuestas:



9

Siempre quise ver un juego en el que el mapa esférico usara un poliedro regular de algún tipo en lugar de jugar el mundo en un toro. Esta técnica se llama mapa Dymaxion . (fuente: grunch.net )texto alternativo         

Yo recomendaría un icosaedro . Coloca el triángulo actual para que esté alineado en un borde de un cuadrado. Cuando el jugador salga del triángulo, levante el siguiente triángulo y vuelva a mapearlo de manera idéntica. Las coordenadas del jugador se reasignarán a la nueva sección. Por lo tanto, cada sección de su mapa tiene su propio sistema de coordenadas. También deberá dibujar el fondo de las 3 secciones adyacentes y 9 secciones semi adyacentes. No creo que el usuario pueda determinar cómo se implementa si está bien hecho.

Aquí hay un ejemplo de cómo esto podría funcionar.

Por supuesto, después de leer esto, probablemente usarás el clásico mapa toro y estaré esperando ver un verdadero universo poliédrico.


No usaré un toro. Podría usar un cilindro como lo hacen los juegos Civ. Pero, dada la falta de soluciones brillantes, estoy seriamente inclinado hacia un cubo. ¡Un cubo es un poliedro! :)
clweeks

5

Si crea una esfera utilizando una base geodésica, el área polar no se trata de manera diferente a cualquier otra región en términos de espaciado de vértices que facilita el mapeo UV uniforme.

La mayoría de las aplicaciones de modelado te permiten crear una esfera primitiva usando un diseño geodésico.


El problema es que obtendrás diamantes en lugar de cuadrados en este caso, y eso no es lo que quería el OP.
Kornel Kisielewicz

A menos que me falte algo, eso no me da regiones que sean más fáciles de coordinar, mapear y vincular ... ¿verdad?
clweeks

Geodésico parece ser el camino a seguir para mí, no puedo pensar en ninguna otra opción para la subdivisión regular. Si realmente necesita regiones cuadradas, seguramente puede generar una región cuadrada, centrada en el centro del triángulo, a pesar de que se superpone con otros mosaicos. Para esferas lo suficientemente grandes (y triángulos lo suficientemente pequeños), el desplazamiento entre las regiones cuadradas y las caras de triángulos adyacentes será insignificante. Eso debería preservar la ventaja de poder describir las interacciones locales (es decir, el mismo cuadrado) en el mismo sistema de coordenadas, ¿no?
MrCranky

Creo que hay algunas formas geodésicas que pueden dar cuadrados aproximados si REALMENTE se necesitan.
Speeder

Obtienes diamantes en lugar de cuadrados, pero debería ser bastante fácil hacer una transformación para corregirlo. No hay postes garantizados.
ChrisE

5

No hay forma de "mapear" una esfera con cuadrados (o rectángulos) y hacer que todos se unan en vértices "comunes".

Sin embargo, ¿sería factible generar la "visión local" a pedido? El espacio del problema no se menciona realmente en la pregunta, pero si estuviera trabajando en algo donde quisiera una vista de la ciudad pero quisiera poder girar el mundo, podría mapear temporalmente una cuadrícula en una sección "lo suficientemente plana" de el mundo. El origen de la cuadrícula sería donde estuviera su centro local, y lo normal en ese punto coincide con lo normal de la superficie del planeta.

Luego, cuando uno sale de la red, se genera uno nuevo bajo demanda.

Esto puede o no funcionar para el OP, pero para algunos puede ser útil.


4

Tome un cubo, con la distancia entre los vértices y el centro del cubo igual al radio deseado. Tienes una esfera hecha de 6 quads.

Ahora, en cada paso, tome cada quad, divídalo en 4 y mueva los nuevos 5 vértices (uno en el centro y 4 en los bordes - advertencia, se COMPARTIEN) lejos del centro para que les guste el deseado radio.

No, este método no es perfecto, pero al menos es una distribución más o menos igual sobre la esfera.


3
La distorsión es en realidad bastante severa con esto: los cuádriceps en el medio de la cara estarán cerca del cuadrado, y los que están cerca de las esquinas estarán muy distorsionados.
JasonD

@JasonD: Todavía será mejor que todos los diamantes. Sugiera una solución que esté menos distorsionada si desea hacer un voto negativo.
Kornel Kisielewicz

Bueno, puedes aproximar una esfera bastante bien con la división geodésica, pero no estoy seguro de ver cómo eso me ayuda.
clweeks

1

Con el dymaxion max, tienes hexágonos dispuestos en triángulos en una superficie plana, pero como el mapa no es realmente plano, son pentágonos. Si desea permitir que el jugador mantenga su orientación cuando caminan sobre ciertas porciones, deberá separar los mapas de ubicación de la forma en que están almacenados. Para cosas como edificios, puede almacenar un pequeño mapa de vectores rectangulares y luego hacer un trabajo duro al dibujarlos en cualquier orientación que necesite.

No es necesario que siempre hagas que el interior se vea como si hubiera habido un terremoto reciente porque creo que el jugador promedio ni siquiera debería preocuparse por entrar por una puerta hacia el noreste, sino por entrar en una pantalla con la puerta de entrada orientada debido sur y todo el edificio en una cuadrícula regular.

Sin embargo, si solo va a almacenar edificios y sitios importantes como ese, entonces ha hecho todo el trabajo para un patrón de balón de fútbol de todos modos. El resultado final es que estás almacenando el mundo como un patrón no cuadrado y luego forzándolo a una grilla en donde sea que esté el jugador.

Sin embargo, hay otra alternativa: si no les das una indicación tan precisa de la esfera, como si solo les dieras una brújula de baja precisión para decirles cuál de las cuatro direcciones ortogonales estaba más cerca del Norte, entonces podrías escapar con solo hacer rotaciones de 90 grados para cualquier lugar al que fuera el jugador. Dado el nivel de gráficos asumido, no es como si tuviera que preocuparse de que un edificio alto oscurezca alguna puerta. Siempre y cuando supieran si estaban cerca de los polos o no, no deberían molestarse demasiado por el cambio de la brújula en ellos, a menos que los NPC por allí les dijeran que fueran al noreste o que trataran de ir a coordenadas específicas de latitud y longitud. .


1

Estás haciendo una pregunta que las personas que hacen mapas han estado preguntando durante mucho tiempo :)

Definitivamente, vaya a leer en Map Projectsions para obtener algunas ideas e ideas que podrían ayudarlo. El desafío de representar la superficie de una esfera en / con un plano 2D plano ha sido algo en lo que la gente ha estado pensando durante mucho tiempo.

La respuesta corta es, no, no puedes hacerlo. Es por eso que cuando miras los mapas del mundo, algunas partes están distorsionadas y otras no. Por lo general, son los polos porque la mayoría de los mapas son sobre áreas no polares.

Como han dicho otras respuestas, la respuesta es usar una forma diferente (hexágonos o triángulos, por ejemplo) o generar dinámicamente su mapa sobre la marcha para el punto de vista actual del usuario.

Los mosaicos cuadrados son bastante fáciles de administrar, sin duda, pero no creo que crear un mapa hexadecimal sea tan difícil.

Aquí hay un artículo anterior de GameDev.net que puede resultarle útil. Se trata de hacer mosaicos isométricos y hexagonales en una cuadrícula.

http://www.gamedev.net/reference/articles/article747.asp

Buscar en Google "mapa hexadecimal en mosaico" te dará muchos golpes, algunos útiles y otros no.


1

Estoy operando varias cámaras de red PTZ de Sony, modelo SNC-RX570N, con el fin de rastrear objetos en movimiento en el cielo y triangular para obtener verdaderas pistas en 3D. Uno de los aspectos de la configuración inicial es definir "recorridos" desatendidos, para los cuales se deben elegir puntos de referencia. Hay un número restringido de dichos puntos de referencia programables, y quiero cubrir todo el hemisferio (la "esfera celestial") desde el horizonte hasta el cenit, sin dejar huecos.

Entonces me hice la pregunta "¿Cuál es el número mínimo de puntos de referencia que necesito para una cobertura total (sin espacios)?". He descubierto que en realidad no puedo entender esto completamente.

La cámara tiene una panorámica sin fin (360 grados) y una inclinación de 0-90 grados, por lo que teóricamente es posible lograr una cobertura completa. La pantalla de la cámara, destinada al uso de la computadora, tiene una relación de aspecto rectangular de 4: 3. El campo de visión horizontal aproximado con zoom 1x es de 58 grados.

Hay dos formas de representar el problema, dependiendo de la proyección que uno elija: - rectilíneo como Mercator, donde el horizonte es "el ecuador", y el cenit es "el polo", dilatado en más de 360 ​​grados de la sartén. - polar, donde el horizonte es la circunferencia del círculo y el cenit es el centro del círculo.

Encuentro polar la forma más fácil de abordar el problema. Puedo dividir el círculo en rebanadas de tarta horizontales de tamaño FOV, y esto me dice que necesito 7 puntos de referencia alrededor del círculo con ese 58-H H-FOV. Hasta aquí todo bien. El radio interno es simplemente la inclinación o V-FOV, que es 3/4 de 58 grados. Hasta ahora todo bien: he cubierto las partes más externas del círculo.

Pero se vuelve más complicado a medida que nos acercamos al cenit. Asumiré que uno de mis puntos de referencia está exactamente en el cenit. ¿Cómo mapeo mi rectángulo de vista en la región alrededor del centro del círculo? ¿Es esa forma un rectángulo, una elipse, un alfiletero, o qué? ¿Cómo relleno el bit intermedio entre la agradable cobertura exterior ordenada y esta extraña forma en el cenit? Desconcertado.

Observo que el ángulo sólido de un hemisferio es 2 * PI esteradianos, y el de mi FOV con zoom 1x es 0.762 st, lo que significa que necesito un mínimo de 9 teselaciones. Sospecho que la respuesta es superior a 9.


Qué tal esto ... El círculo tiene PI ^ 2 rad ^ 2 de área, y los rectángulos FOV son área 0.75 rad ^ 2. Tan ingenuamente necesitamos 13.16 puntos que deben redondearse para una cobertura total de 14 puntos. La pregunta ahora es: ¿cómo se van a colocar?
Andrew

0

Si desea hacer una cuadrícula mundial, le sugiero que divida el planeta en países o continentes, y haga una cuadrícula cuadrada centrada adecuadamente en cada uno. Deje que el océano cubra las costuras.


En realidad, mi pregunta es "ya que obviamente no puedo hacer lo que creías que realmente estaba preguntando, ¿qué podría hacer en su lugar?"
clweeks

Muy bien, editado entonces.
zaratustra

Sí, supongo que fui desviado por la otra parte. Estaba pensando en implementar el mapa Dymaxion de Fuller, pero trabajar con mosaicos triangulares parecía tanto un clusterF * como el problema de mosaico polar con el que estoy comenzando. Entonces, con su sugerencia, si alguien está navegando desde América del Norte hasta el norte de Asia, y las coordenadas son importantes (tal vez puedan establecer bases flotantes o algo así), ¿cómo puedo unir las costuras? ¿Solo tiene una tabla de conexiones NA: A5 -> A: Z475?
clweeks

Supongo. Aunque si logran hacer eso, solo les daría una recompensa adicional y los apartaría de la red hasta que lleguen a un lugar razonable.
zaratustra
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.