2009-12-05 9 views
1

Ok. Donc, je pense que quelque chose serait envisagé sur google earth ...Trouver 2 points sur un objet 3D et obtenir leur distance

J'essaie de comprendre comment mapper des points sur un objet primitif 3d (une sphère), obtenir leur distance via n'importe quel direction par la circonférence, et leur distance par le diamètre. Les points vont être des coordonnées de latitude et de longitude.

En ce moment, ce que je suis en train d'utiliser pour cartographier les coordonnées (une version agnostique code):

x1 = radius * cos(long1) * cos(lat1); 
    y1 = radius * sin(long1) * cos(lat1); 
    z1 = radius * sin(lat1); 

mais je suis presque sûr de son mal. Comment est-ce que je pourrais obtenir chaque position de points et calculer leurs distances directement à travers le diamètre de la sphère et également leur distance allant autour de la circonférence de la sphère?

Merci.

Répondre

4

Vous êtes en fait assez proche. Pour obtenir la distance en ligne droite, il vous suffit de faire:

sqrt ((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)

Pour la distance autour du grand cercle, rappelez-vous qu'il est pi diam angle. Le produit scalaire des vecteurs du centre de la Terre aux deux points est le cosinus de l'angle. Ainsi, vous obtenez:

pi diam ACOS ((x1 * x2 + y1 * y2 + z1 * z1)/diam^2)

Bien sûr, il y a une 2ème loin si vous allez dans l'autre sens la terre, mais pour cela vous avez juste besoin de 2 * pi - acos (...).

+0

Recherche wikipedia sous 'distance orthodromique' pour voir plus de formules connexes. – Paul