% Problème direct sur une geodesique et visualisation de la geodesique sur
% la sphère auxilliaire
%Données d'entrées
a=input('Entrez le demi grand axe de l ellipsoide:');
e=input('Entrez l excentricite: '); f=1-sqrt(1-e^2);% CAlcul de l'aplatissement b=a*(1-f); e1=e^2/(1-e^2); % c'est le caclul de la 2eme excentricité au carré phi1=input('Entrez la latitude du point de depart:'); landa1=input('Entrez la longitude du point de depart '); az1=input('Entrez azimut du point de depart'); s=input('Entrez la distance geodesique: '); %1- Calcul de la latitude reduite du point de depart b1=atan((1-f)*tan(phi1)); %2- Calcul de la latitude reduite du vertex à partir de la relation de % clairaut b0=acos(cos(b1)*sin(az1)); %3- Calcul de la constante w² w2=e1^2*(sin(b0))^2; %4- Calcul de la distance angulaire sur la sphere auxilliaire pour le point % de depart sigma1=atan(tan(b1)/cos(az1)); %5- Calcul de l' azimut de la geodesique a l'equateur azE=asin(cos(b0)); %6- Calcul des constantes de Vincenty A et B A=1+(w2/16384)*(4096+w2*(-768+w2*(320-175*w2))); B=(w2/1024)*(256+w2*(-128+w2*(74-47*w2))); %7- Calcul de la distangulaire sur le grand cercle de la sphere auxilliaire sigma= s/(b*A); sigmaM=(2*sigma1+sigma)/2; Dsigma=B*sin(sigma)*(cos(2*sigmaM)+(B/4)*(cos(sigma)*(2*(cos(2*sigmaM))^2-1)- (B/6)*cos(2*sigmaM)*(-3+4*(sin(sigma))^2)*(-3+4*(cos(2*sigmaM)^2)))); while Dsigma<10^-20; sigma=sigma+Dsigma; sigmaM=(2*sigma1+sigma)/2; Dsigma=B*sin(sigma)*(cos(2*sigmaM)+(B/4)*(cos(sigma)*(2*(cos(2*sigmaM))^2- 1)-(B/6)*cos(2*sigmaM)*(-3+4*(sin(sigma))^2)*(-3+4*(cos(2*sigmaM)^2)))); end %8-Calcul de la latitude reduite du point d'arrivé b2=atan((sin(b1)*cos(sigma)+cos(b1)*sin(sigma)*cos(az1))/sqrt((sin(azE)^2)+ (sin(b1)*sin(sigma)-cos(b1)*cos(sigma)*cos(az1))^2)); %9 Calcul de la latitude du point d'arrivée phi2=atan(tan(b2)/(1-f)); %10 Calcul de la différence de longitude sur la sphère auxiliaire Du=atan((sin(sigma)*sin(az1))/(cos(b1)*cos(sigma)- sin(b1)*sin(sigma)*cos(az1))); %11 Calcul de la constante C de Vincenty C=(f*(cos(azE)^2)/16)*(4+f*(4-3*(cos(azE)^2))); %12 Calcul de la différence de longitude sur l'ellipsoide Dlanda=Du-(1-C)*f*sin(azE)*(sigma+C*sin(sigma)*(cos(2*sigmaM)+C*cos(sigma)*(- 1+2*(cos(2*sigmaM)^2)))); %13 Calacul de l'azimut d'arrivée et de l'azimut inverse az2=atan(sin(azE)/(cos(b1)*cos(sigma)*cos(az1)-sin(b1)*sin(sigma))); if az2<pi azinv=az2+pi; else azinv=az2-pi; end disp=(['l azimut d arrivée et son inverse sont:', num2str(daz2),num2str(azinv)]);