2010-06-18 13 views
7

¿Cómo puedo determinar si un punto está dentro o fuera de un polígono que se encuentra en la superficie de la tierra?Es un punto dentro o fuera de un polígono que se encuentra en la superficie de un globo

El interior del polígono se puede determinar mediante la regla de la mano derecha, es decir. el interior del polígono está a su derecha cuando camina alrededor del polígono.

El polígono puede

  1. Circle cualquiera de los polos
  2. Cross el 180 longitud
  3. cubren más del 50% del globo

A medida que el globo es una esfera el cruce normal de rayos los algoritmos no funcionan correctamente.

+0

Su pregunta no es muy clara: polígonos no se pueden curvar (por definición), de modo que en vez está preguntando cómo determinar si un punto está en la superficie de una esfera? Eso es realmente fácil: está en la superficie si la distancia al centro de la esfera == el radio de la esfera. –

+1

Creo que quiere decir si tomas una serie de puntos en la esfera y construyes una forma cerrada entre ellos. Los puntos más finos sobre cómo conectar puntos de polígono en los bordes parece ambiguo (¿puede conectarlos directamente luego proyectar en la esfera, tal vez?) – Akusete

+0

correcto, un polígono en mi mundo es una serie de puntos en la esfera y construyo una forma cerrada entre ellos – richard

Respuesta

2

De hecho, el enfoque de la regla de devanado de rayos y funcionamiento normal funciona muy bien en la superficie de una esfera, con un pequeño ajuste.

En la superficie de una esfera, una "línea recta" es un gran círculo y las distancias se miden en unidades angulares en lugar de metros o pulgadas. Para dibujar un rayo desde un punto arbitrario en la superficie de la esfera simplemente forma un gran círculo a través de ese punto arbitrario y cualquier otro punto en la superficie de la esfera. Para mantener las matemáticas limpias, elija un segundo punto a aproximadamente pi/2 del punto cuya ubicación está probando. Aplica la regla par-impar usual al gran círculo y al polígono de prueba.

La regla de enrollamiento también se traduce directamente de líneas rectas en el plano a (segmentos de) círculos grandes en una esfera.

Todo lo que necesita ahora son implementaciones Java de operaciones básicas de geometría esférica. No tengo ninguna recomendación en ese sentido, pero supongo que Internet ayudará. Para las matemáticas, comience con Mathworld.

Otro enfoque sería proyectar sus puntos y polígonos desde la superficie de la esfera hasta el plano, que es lo que hacen las proyecciones de los mapas, la relación topológica del interior no se verá afectada por dicha transformación.

Ah, y que tendrá que decidir qué hacer si su polígono describe un gran círculo

+1

No tiene que decidir nada si su polígono describe un gran círculo. Todavía hay un interior y un exterior. –

2

Usa los aviones en lugar de los rayos. Una "línea" en la superficie de una esfera definida por dos puntos es un arco de un gran círculo (círculo cuyo centro es el centro de la esfera) y también está contenido en un plano que contiene esos dos puntos y el centro de la esfera .

Compruebe si el punto es "mayor" o "menor" que el plano correspondiente para cada borde del "polígono" para determinar en qué lado de la "línea" se encuentra.

+0

Gracias, entiendo la teoría básica. ¿Conoces una API de Java que hace esto? O en algún lugar puedo encontrar un algoritmo? – richard

+1

NASA proporciona un SDK Java de código abierto llamado WorldWind para aplicaciones geoespaciales. Puede ser excesivo para lo que necesita, pero podría proporcionar más ideas para su aplicación. http://worldwind.arc.nasa.gov/java/ – Tansir1

+0

Me gustaría abordarlo como un problema de matemáticas. Encuentra una fórmula para un avión desde tres puntos en el avión, conecta tu punto en la fórmula y mira en qué lado del avión está. Enjabona, enjuaga, repite. Usaría las coordenadas xyz, en lugar de los sistemas de coordenadas cilíndricos/esféricos, simplemente porque los planos son más simples de esa manera. Como no estoy familiarizado con su algoritmo de cruce de rayos, no sé cómo adaptar este enfoque, pero sospecho que es factible. – Slartibartfast

Cuestiones relacionadas