Calculer la distance entre deux couples (deux points) est souvent utile pour trouver le meilleure chemin sur une carte. La formule pour trouver la distance entre deux points s'inspire de la formule de Pythagore (c2=√a2+b2) et de ses théories sur les triangles. Vous trouverez la réponse que vous souhaitez, à l'aide du code source Ada suivant :
- WITH TEXT_IO;
-
- PROCEDURE DeltaExample IS
-
- USE TEXT_IO;
-
- FUNCTION Sqr(X:IN Float) RETURN Float IS BEGIN
- RETURN X*X;
- END;
-
- FUNCTION Sqrt(X:IN Float) RETURN Float
- IS A,B,M,XN:FLOAT;
- BEGIN
- IF X=0.0 THEN
- RETURN 0.0;
- ELSE
- M:=1.0;
- XN:=X;
- WHILE XN>=2.0 LOOP
- XN:=0.25*XN;
- M:=2.0*M;
- END LOOP;
- WHILE XN<0.5 LOOP
- XN:=4.0*XN;
- M:=0.5*M;
- END LOOP;
- A:=XN;
- B:=1.0-XN;
- LOOP
- A:=A*(1.0+0.5*B);
- B:=0.25*(3.0+B)*B*B;
- EXIT WHEN B<1.0E-15;
- END LOOP;
- RETURN A*M;
- END IF;
- END;
-
- FUNCTION Distance(X1,Y1,X2,Y2:IN Float) RETURN Float IS BEGIN
- RETURN Sqrt((Sqr(Y2-Y1))+(Sqr(X2-X1)));
- END Distance;
-
- BEGIN
- PUT_LINE("Calcul la distance entre deux points (0,0)-(10,10): " &
- FLOAT'IMAGE(distance(0.0,0.0,10.0,10.0)) & " cm2");
- PUT_LINE("Calcul la distance entre deux points (2,2)-(10,10): "&
- FLOAT'IMAGE(distance(2.0,2.0,10.0,10.0)) & " cm2");
- PUT_LINE("Calcul la distance entre deux points (1,1)-(8,8): "&
- FLOAT'IMAGE(distance(1.0,1.0,8.0,8.0)) & " cm2");
- END DeltaExample;
on obtiendra le résultat suivant :
Calcul la distance entre deux points (0,0)-(10,10): 14.142135623731Calcul la distance entre deux points (2,2)-(10,10): 11.3137084989848
Calcul la distance entre deux points (1,1)-(8,8): 9.89950
Dernière mise à jour : Samedi, le 25 août 2012