ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Calcul d'une distance a une droite (pour Fred)   



L'auteur

Francis Faure
France France
Membre Actif (personne physique)
# 0000000001
enregistré le 11/10/2004

http://www.wanagain.net
46 ans
Faure Francis
de la société Design Or Decline
Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation > Maths - Matrices - Algos

Calcul d'une distance a une droite (pour Fred)
# 0000000290
ajouté le 16/02/2006 11:54:54 et modifié le 16/02/2006
consulté 3693 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0


Le téléchargement des pièces jointes est limité aux membres
Veuillez vous identifier ou vous inscrire si vous n'avez pas encore de compte ...
Description

Bonjour Fred,
Ta question subliminale de calcul d'une distance à une droite m'ayant empéché de dormir,
j'ai révisé un peu mes maths.... :p

tu trouveras ci joint un formulaire VFP illustrant la projection du point C sur une droite AB,
avec le calcul de la distance [CD].

Espérant que ça réponde a ton besoin bizarroïde...
...c'est en VFP alors je post ici

Cordialement
Francis

Code source :
do form droite
Commentaires
le 20/02/2006, FredA a écrit :
j'ai fait un petit correctif dans la procedure de calcul.
je teste les horizontales et verticales en entrée, ceci pour eviter le test sur le divisions par 0.
Encore merci pour ton aide Francis
Petit correctif avant le * affiche D

En testant en entrée, ça évite de se tester les divisions par zero

IF x1=x2
distance = IIF(x3>x1, x3-x1, x1-x3)
x4=x1
y4=y3
fa=9999999
fc=0
fb=x4
fd=y4
ELSE
IF y1=y2
distance = IIF(y3>y1, y3-y1, y1-y3)
y4=y3
x4=x3
fa=0
fc=9999999
fb=y4
fd=x4
ELSE
* Formule : recherche de D(x4,y4) point de la droite AB perpendiculaire a CD
* calcul de a
* Fa = (y2 - y1) / (x2 - x1)
Fa = (y2 - y1) / (x2 - x1)
* calcul de b
* Fb = y1 -ax1 = y2 -ax2
Fb = y1 - Fa * x1
* calcul de c (ortho) => c= -1/a
Fc = -1 / Fa
* calcul de d
* Fd = y3 -cx3
Fd = y3 - Fc * x3
* calcul de x4
* y4 = cx4 + d et y4 = ax4 + b (car point D commun au 2 droites)
* x4 = (b-d) / (c-a)
x4 = (Fb-Fd) / (Fc-Fa)
* calcul de y4 = cx4 + d
y4 = Fc * x4 + Fd
* Distance
* d =
Distance = sqrt((x3-x4)^2+(y3-y4)^2)
ENDIF
ENDIF

* affiche D
.....


Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2014.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0