CALCUL DE LA DISTANCE MINIMALE ENTRE UN POINT ET UNE DROITE DANS L'ESPACE - COOR

Messages postés
55
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
17 août 2006
- - Dernière réponse : lexsty
Messages postés
173
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
18 juin 2017
- 30 janv. 2012 à 22:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35053-calcul-de-la-distance-minimale-entre-un-point-et-une-droite-dans-l-espace-coordonnees-du-point-le-plus-proche-sur-la-droite

fireuo
Messages postés
55
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
17 août 2006
-
Jolie mais j'aimerait savoir ou que je pourait trouver toute les formules (bien expliquer) pour ce qui concerne end 3d : La distance entre un point et une droite (comme toi), distance entre 2 points, longeur d'une droite, etc.. (si y en a d'autre)

Merci bien

EN passant 10 / 10 ;)
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Salut.
Voilà la méthode de calcul de la distance d'un point à un plan (dans l'espace).

Il faut un plan carctérisé par:
-son équation ax+by+cz+d=0
-un point A(X,Y,Z)

si le plan est caractérisé par 3 points, alors

1) on a ces 3 points :
A(q,s,m)
B(f,g,h)
C(j,i,l)

2) on vérifie que les 3 points définissent bien 1 plan, en démontrant que les vecteurs AB et BC ne sont pas colinéaires.
Donc si il existe k (réel) tel que (f-q)=k(j-f) and (g-s)=k(i-g) and (h-m)=k(l-h) alors pas de plan ==> exit problème

3) on cherche le veteur N normal au plan, tel que N.AB=0 and N.BC=0 (produits scalaires). On résoud ce système de deux équations, et on obtient le vecteur N de composantes (a,b,c), coefficients de l'équation du plan. On calcule d en sachant que le points A (ou B ou C) appartient au plan, donc qu'il vérifie aq+bs+cm+d=0 ==> on en déduit d

4) la distance est finalement donnée par
D=abs(aX+bY+cZ+d)/sqr(a*a+b*b+c*c)

Très simple, donc. Mais quand même bien plus long et intéressant que de calculer la distance entre 1 droite et 1 point.

Donc tu devrais mettre à jour ton prog et proposer d'autres calculs possibles, parce que là c'est très léger...

Ah oui, au fait, ta déclaration de variables est mauvaise.
Dim d1, d2, d3, m2, xh, yh, zh, dh As Double
ne déclare que dn en Double et tout le reste en Variant
A revoir donc...

@+
lexsty
Messages postés
173
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
18 juin 2017
-
Salut.
Faire un programme qui permet de faire plusieurs types de calculs
dans l'Espace avec par exemple des points, des droites, des plans
des cônes, des sphères etc ... c'est intéressant, mais il faut d'abord mettre au point les différents programmes spécifiques avant de les regrouper et il faut prendre le temps
pour cela
Je retiens ta méthode pour le calcul de la distance d'un point à un plan
Merci de tes remarques
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Mais de rien ! Les commentaires sont faits pour çà.
Bonne prog! @+
brunomoraut
Messages postés
16
Date d'inscription
jeudi 10 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011
-
Très bon exemple d'application des mathématiques. Pour ma part (je fais de la 3D pour m'amuser) je prends le temps de faire un document qui explique la résolution mathématiques employée.
Pour répondre à la remarque du "programme qui fait tout", pour les résolutions dans l'espace, les gros logiciels utilisent le calcul matriciel.
Il ont donc écrit des routines qui calcules des opérations sur les matrices (additions, produits, déterminant et que sais-je), et si on avance en mathématique, on s'apperçoit que (par exemple) un déplacement d'un point, c'est tous simplement l'addition de la matrice de ses coordonnée, avec la matrice du (vecteur) déplacement.
On trouve sur les sites des grandes écoles, ces résolutions mathématiques, mais c'est dommage que des exemples de petits programmes comme tu l'as fait, ne leur soient pas associées.
Cependant, ce type de programmation à un inconvénient, car on fait beaucoup d'appels à des routines, ce qui ralenti les programmes, et aussi on utilise une routines qui fait un calcul complet, alors que la solution est plus simple, et n'a pas besoin d'utiliser toutes les boucles (ex: déplacement sur l'axe X, il suffit d'ajouter le déplacement à la coordonnées X...)