10 votos

Intersección de dos arcos sobre esfera.

Tengo dos arcos en una esfera que se definen como un par de puntos: (θ₀, φ₀), (θ₁, φ₁) . Necesito encontrar un punto en el que se crucen, o alguna indicación si no lo hacen. Lo importante es que son arcos, no círculos, por lo que es importante encontrar la intersección que se encuentra específicamente en los arcos (no en los círculos proyectados). Los arcos son los arcos más cortos posibles. Estoy fallando en encontrar alguna ecuación específica en internet. ¡Gracias!

3voto

Anna Puntos 4

Puedes encontrar una implementación de javascript aquí:

http://www.movable-type.co.uk/scripts/latlong.html

Y una buena explicación aquí:

http://www.boeing-727.com/Data/fly%20odds/distance.html

2voto

Dan Puntos 630

Como lo que yo puedo decir, para verificar que dos arcos que se cruzan en la misma esfera que debe tener un rango angular que tiene al menos comparte un determinado valor de phi y theta, por ejemplo, si un arco cubre (30,30 ) a (60, 60) y el otro cubre (0, 0) a (0, 60) que no se cruzan, incluso si theta está de acuerdo. Básicamente, la condición es que los intervalos para los dos conjuntos de phi y theta tienen distinto de cero conjunto teórico de la intersección al mismo tiempo, que es el de rangos para la ips debe tener al menos un valor en común, al mismo tiempo, como ambos rangos de theta tener al menos un valor en común.

0voto

nibblebot Puntos 71

He aquí un esquema de cómo podría hacer (aunque sospecho que hay métodos más eficientes).

  • Para cada arco, obtener el gran círculo en el que se encuentre. Si usted no tiene esto, se puede definir con su (Cartesiano) vector normal, es decir, producto cruzado de los dos puntos en el arco que tiene.
  • Con estos dos grandes círculos, encontrar el punto de intersección. Uno bastante poco elegante manera de hacer esto es:
    • tomar la cruz del producto (de nuevo) de los dos grandes círculo normales n3=n1×n2n3=n1×n2 - y el uso de estos 3 vectores para definir los 3 planos (todo el que pasa por el origen).
      • Algunos precaución es necesaria en el caso de los dos arcos se les proporcionó originalmente estaban en el mismo gran círculo.
    • Definir p0p0 como la intersección de estos tres planos (calcular por ejemplo, con la inversión de matrices o factorización LU), ahora definir pxpx como esta intersección de la línea de p0+λn3p0+λn3 con la unidad de la esfera (esto implica resolver una ecuación cuadrática)
  • Finalmente, es necesario comprobar si este punto de pxpx (que se encuentra en grandes círculos) está dentro de los arcos que usted especifique. Una manera (de nuevo, puede haber mejores maneras de hacer esto es:
    • (Para cada arco) parametrizar el gran círculo en términos de un único parámetro αα, definido como el ángulo de la u0=(θ0,ϕ0)u0=(θ0,ϕ0) final.
    • α0=0α0=0,
    • α1=acos(v1.u0)α1=acos(v1.u0)
    • αpx=acos(px.u0)αpx=acos(px.u0)
    • Compruebe si αpx<α1αpx<α1, si es así, repita para el otro arco

Usted probablemente ha perdido el interés por ahora, pero voy a postear esto como un marcador de posición para que alguien pueda señalar una mejor manera.

0voto

jamadagni Puntos 203

Creo que esta página podría ayudarte. Aquí hay una implementación interactiva.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X