Donc, en gros, ce dont tu as besoin, ce sont des formules de conversion
distance => coordonnées ?
Oui.
Un ami m'a donné la formule que j'ai testé en javascript :
function coordToDistt(u, v, w){
x = w * Math.sin(u) * Math.cos(v);
y = w * Math.sin(u) * Math.sin(v);
z = w * Math.cos(u);
return {x: x, y: y, z: z};
}
function distToCoord(x, y, z){
w = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) + Math.pow(z, 2));
u = Math.acos(z / w);
if(y >= 0)
v = Math.acos(x / Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));
else
v = 2 * Math.PI - Math.acos(x / Math.sqrt(Math.pow(x, 2) + Math.pow
(y, 2)));
return {u: u, v: v, w: w};
}
Mais les résultats me laissent penser qu'il y a une erreur quelque
part !
A vue de nez, ça a l'air correct.
> Mais les résultats me laissent penser qu'il y a une erreur quelque
> part !
C'est à dire ? Tu obtiens quoi ?
=> x = 0.8512750392674557, y = -14.910778757328066, z =
-18.99110692662728
cartToGeo(
geoToCart(2.475184854653805, 48.75171547649544,
24.16025940756962).x, // C.a.d. 0.8512750392674557
geoToCart(2.475184854653805, 48.75171547649544,
24.16025940756962).y, // C.a.d. -14.910778757328066
geoToCart(2.475184854653805, 48.75171547649544,
24.16025940756962).z // ...
);
=> u = 2.475184854653805, v = 4.769418326238336, w = 24.16025940756962
la valeur de v est donc fausse !
PS ces calculs doivent me servir pour un projet google earth. J'ai
posé des questions techniques sur le forum dédié afin d'éviter d'avoir
à faire ce genre de calculs, et, bien que le forum susnommé soit
infiniment plus actif que celui ci, personne ne daigne me répondre !
Un grand merci donc.
Ben oui, tu sembles utiliser des degrés alors que les calculs sont en
radians...
Bah non,
? (48.75171547649544 - 4.769418326238336)/Pi
13.999999999999999...
ça fait donc une « erreur » de ~ 14 * Pi : c'est la valeur initiale de v
qui n'est pas entre 0 et 2*Pi.
--
Jacques L'helgoualc'h