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?
fuente
Respuestas:
Creo que estás buscando una cuadrícula geodésica . Mucha gente aproxima la tierra con un cubo:
Carlos A. Furuti tiene muchos mapas de la tierra que se pliegan en un cubo.
También te puede interesar la proyección quincuncial de The Peirce que asigna toda la Tierra a uno o dos cuadrados.
El icosaedro (mapa de Dymaxion; "¿Cuál es la mejor manera de pixelizar una esfera?" ) Produce una distorsión ligeramente menor, pero es más complicado.
fuente
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 )
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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. .
fuente
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.
fuente
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.
fuente
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.
fuente