Je développe un petit code avec lequel j'ai besoin de calculer la différence d'angles dans le plan équatorial (ie la différence de longitudes) en fonction de la différence d'angles dans un grand plan de cercle (paramétré par une latitude donnée).Valeur NAN et angle de calcul dans le plan équatorial avec grande distance
I utilisé la formule suivante à partir de this wikipedia link:
d(sigma) = arcos (sin(phi1).sin(phi2) + cos(phi1).cos(phi2).cos(d(lambda))
Le but est de calculer la différence d'angle d(lambda)
. Dans mon code, les paramètres d'entrée sont les suivants:
radius = 50 phi1 = 0 phi2 = initial latitude describe below d(sigma) = (distance/theta) where theta is the local angle in great circle plane and distance is the perimeter of this great circle.
angle local theta
dans grand plan du cercle commence à partir 0
et est incrémentée par 0.01 step
.
Sachant phi1
, phi2
, distance
et theta
, je peux exprimer d(lambda)
comme (en langage Javascript):
var distance = radius*Math.abs(theta);
var deltaLambda = Math.acos(Math.cos(distance/radius)/Math.cos(angleTheta));
où angleTheta
est la latitude du point de départ (identifié par coordTorus
THREE.Vector3) et égale à :
var angleTheta = Math.atan(coordTorus.y/Math.sqrt(coordTorus.x * coordTorus.x + coordTorus.z * coordTorus.z));
Mon problème est que, pour une valeur initiale de angleTheta
égale à 0
, une valeur theta
initiale égale à 0
, le calcul de deltaLambda
est bon, mais pas dans d'autres cas:
Prenons par exemple une valeur initiale de angleTheta = PI/4
et theta = 0
, j'ai un NAN value
pour deltaLambda
parce que dans ce qui précède formule, je reçois:
var deltaLambda = Math.acos(Math.cos(0.5/50)/Math.cos(Math.PI/4));
Je reçois Math.acos(sqrt(2)) = NAN
Comment pourrais-je contourner ce problème et trouver une astuce avec laquelle la valeur à l'intérieur Math.accos
reste dans l'intervalle ?
J'ai vu sur le lien ci-dessus il y avait d'autres formules pour calculer la distance grand-cercle, mais j'ai besoin d'isoler la variable d(lambda)
avec ces formules, je veux dire une expression symbolique de d(lambda)
en fonction d'autres paramètres.
Si quelqu'un pouvait donner une autre formule cohérente ou trouver un moyen d'éviter NAN value error
, ce serait bien.
Merci d'avance.
ok, la question semble provenir de l'angle de départ de thêta (en plan du grand cercle) mais je ne sais pas quelle valeur à prendre dans ce plan local et l'angle correspondant dans le plan équatorial. – youpilat13