9 votos

Lat/Lon/Alt a coordenadas esféricas o cartesianas

En mi pregunta anterior se me aconsejó que convirtiera lat/lon/altitude a coordenadas esféricas o cartesianas. No estoy trabajando cerca de los polos y sería seguro suponer una Tierra esférica. ¿Cuál sería la mejor manera de hacer esto con la mínima cantidad de operaciones? ¿Sería mejor usar x/y/z o phi/theta/rho? Estoy trabajando en un pequeño microcontrolador, sin FPU hardware (¡sólo FPU software!) así que cada ciclo cuenta.

17voto

Slayd Puntos 111

Tenga en cuenta que "Lat/Lon/Alt" no es más que otro nombre para las coordenadas esféricas, y que phi/theta/rho no son más que otro nombre para la latitud, la longitud y la altitud. :) (Una pequeña diferencia: la altitud se suele medir desde la superficie de la esfera; rho se mide desde el centro -- para convertir, sólo hay que sumar/restar el radio de la esfera).

Convertir phi/theta/rho a cartesianas x/y/z donde (0,0,0) es el centro de la tierra y rho es la distancia desde el centro:

    # python
    x = math.cos(phi) * math.cos(theta) * rho
    y = math.cos(phi) * math.sin(theta) * rho
    z = math.sin(phi) * rho # z is 'up'

(Ten en cuenta que aquí hay algunas opciones ligeramente arbitrarias en lo que significa cada eje... puede que quieras que 'y' apunte al polo norte en lugar de a 'z', por ejemplo).

La inversa, y mucha más información, puede encontrarse en Wikipedia: http://en.wikipedia.org/wiki/Spherical_coordinate_system

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