Section courante

A propos

Section administrative du site

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 :

  1. WITH TEXT_IO;
  2.  
  3. PROCEDURE DeltaExample IS
  4.  
  5.    USE TEXT_IO;
  6.  
  7.    FUNCTION Sqr(X:IN Float) RETURN Float IS BEGIN
  8.       RETURN X*X;
  9.    END;
  10.  
  11.    FUNCTION Sqrt(X:IN Float) RETURN Float
  12.          IS A,B,M,XN:FLOAT;
  13.    BEGIN
  14.       IF X=0.0 THEN
  15.          RETURN 0.0;
  16.       ELSE
  17.          M:=1.0;
  18.          XN:=X;
  19.          WHILE XN>=2.0 LOOP
  20.             XN:=0.25*XN;
  21.             M:=2.0*M;
  22.          END LOOP;
  23.          WHILE XN<0.5 LOOP
  24.             XN:=4.0*XN;
  25.             M:=0.5*M;
  26.          END LOOP;
  27.          A:=XN;
  28.          B:=1.0-XN;
  29.          LOOP
  30.             A:=A*(1.0+0.5*B);
  31.             B:=0.25*(3.0+B)*B*B;
  32.             EXIT WHEN B<1.0E-15;
  33.          END LOOP;
  34.          RETURN A*M;
  35.       END IF;
  36.    END;
  37.  
  38.    FUNCTION Distance(X1,Y1,X2,Y2:IN Float) RETURN Float IS BEGIN
  39.       RETURN Sqrt((Sqr(Y2-Y1))+(Sqr(X2-X1)));
  40.    END Distance;
  41.  
  42. BEGIN
  43.    PUT_LINE("Calcul la distance entre deux points (0,0)-(10,10): " &
  44.          FLOAT'IMAGE(distance(0.0,0.0,10.0,10.0)) & " cm2");
  45.    PUT_LINE("Calcul la distance entre deux points (2,2)-(10,10): "&
  46.       FLOAT'IMAGE(distance(2.0,2.0,10.0,10.0)) & " cm2");
  47.    PUT_LINE("Calcul la distance entre deux points (1,1)-(8,8): "&
  48.       FLOAT'IMAGE(distance(1.0,1.0,8.0,8.0)) & " cm2");
  49. END DeltaExample;

on obtiendra le résultat suivant :

Calcul la distance entre deux points (0,0)-(10,10): 14.142135623731
Calcul 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