Wikipedia da una discusión muy profunda de la álgebra aquí: http://en.wikipedia.org/wiki/Trilateration
El primer paso, en realidad no cubierto en la entrada de Wikipedia, es convertir su coordenadas lat/long para coordenadas cartesianas:
x0 = cos(lon0) * cos(lat0) , y0 = sin(lon0) * cos(lat0) , z0 = sin(lat0)
x1 = cos(lon1) * cos(lat0) , y1 = sin(lon1) * cos(lat1) , z1 = sin(lat1)
x2 = cos(lon2) * cos(lat0) , y2 = sin(lon2) * cos(lat2) , z2 = sin(lat2)
(Para mantener las cosas simples cálculos, he eludido por lo que estamos trabajando en unidades de "radios de la Tierra" en lugar de kilómetros)
para sus datos, consigo
p0 p1 p2
X -0.420442596 -0.420430618 -0.42040255
Y -0.67380418 -0.673826567 -0.673825967
Z 0.607631426 0.607614889 0.607634975
El siguiente paso, que está cubierto en el artículo de Wikipedia, es para simplificar las coordenadas, traduciendo los puntos para que p0 esté en el origen y luego gire para que p1 esté en el eje X y p2 esté en el plano XY.
Para la traducción, simplemente restar P0 de p1 y p2:
p0a p1a p2a
X 0 1.19779E-05 4.00462E-05
Y 0 -2.23864E-05 -2.17865E-05
Z 0 -1.65372E-05 3.5486E-06
La rotación no es mucho más difícil. p1b obtiene (x, y) = (d, 0), donde d es solo la distancia desde el origen a p1a (teorema de Pitágoras)
Para p2b, necesitamos resolver p2a en dos componentes: uno paralelo a p1a (que va en nuestro eje x), y uno perpendicular a p1a, (que va en nuestro eje y en el sistema de coordenadas "b").
Para hacer esto, necesitamos un vector unitario en la dirección de p1a, que es solo p1a * (1/d). Tome el producto punto de este vector unitario (llámelo p1a_hat, si lo desea) con p2a, y esa es la coordenada X para p2b. El artículo de Wikipedia llama a este valor "I"
Ahora la coordenada Y es fácil. La longitud desde el origen hasta p2 no puede cambiar bajo la transformación de coordenadas. Así que calcule la longitud de p2a usando el teorema de Pitágoras, luego use el teorema de Pitágoras "hacia atrás" para obtener lo que la coordenada Y de p2b tiene que ser para mantener la longitud igual. Esa es la variable que Wikipedia llama "J". (Tenga en cuenta que hay una ambigüedad que dejaré para que descubra si J es positivo o negativo).
Ahora tiene las tres variables d, I y J, que el artículo de Wikipedia usa para el cálculo. Ahora puedes convertirlos a kilómetros multiplicando por el radio de la tierra. Debería poder hacer el resto del cálculo desde aquí
(Incidentalmente, Wikipedia ofrece un cálculo diferente para la transformación de coordenadas. Me gusta evitar los triggers cuando sea posible).
El término es "triangulación" – skaffman
Parece realmente ser "triangulación" http: // en .wikipedia.org/wiki/Trilateration como "triangulación" implica ángulos – nohat
Solución: http://gis.stackexchange.com/questions/66/trilateration-using-3-latitude-and-longitude-points-and-3-dstances – zengr