Voilà, j'aimerai dessiner un ensemble de morceaux de cylindre en 3D. Les points d'extrémités sont déterminés par une table Excel. Je connais le point du début et le point de fin (donc l'axe X, Y ou Z). Ces segments sont forcément colinéaires entre eux mais ils ne se coupent pas forcément. Ils peuvent s'arréter avant un autre segement sur le même plan ou être parralléles à d'autres. L'idéal pour moi serait donc de calculer la distance entre tous mes segments. Idéalement il faudrait qu'ils soient disant de plus d'une certaine valeur. J'ai donc pensé à essayer de calculer la distance entre eux :
Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?
J'ai pas bien compris ta demande. Si tu veux calculer la distance entre 2 points, tu calcules une distance euclidienne : c'est Pythagore généralisé à la 3e dimension.
je pense qu'il faudrait donc connaitre la distance entre le point A et la droite (DE) puis B et la droite (EF), C et (FG)... mais aussi la distance entre les droites ((AB) et (DE), (BC) et (EF).... en 3D
voici où j'en suis aujourd'hui
PS : AbcAbc6 effectivement désolé, je me suis précipité, j'ai pas fait attention
La distance d'un point a une droite peut se calculer avec un produit scalaire.
Tu cherches la distance entre 2 segments, ça qu'est que tu appelles concretement la distance entre 2 segments / droite ? La distance minimale entre les deux ? ça c'est aussi un petit systeme a 2 inconnus a résoudre, ça se fait bien.
Ce n'est pas vraiment ca Deedolith c'est entre une droite et un point. Je vais aussi calculé entre droites.
Si ca rempli c'est 2 conditions, c'est presque bon. Je serai quasi sûr que mes segments ne se coupent pas a un détail prés qui est : si les droites sont sur le même plan mais que les points sont de part et d'autre de l'autre segment
j'arrive à faire ca maintenant :
j'ai entre un point et une droite mais pas encore "entre droites"
Si ca rempli c'est 2 conditions, c'est presque bon. Je serai quasi sûr que mes segments ne se coupent pas a un détail prés qui est
A moins que ce ne soit un problème de vocabulaire, tu as dis toi même dans ton premier post que tes segments sont forcement colinéaires. Ce qui veut dire qu'ils ne se coupent jamais, non? A moins aussi qu'il ne s'agisse pas des "même segments".
Quand on parle de distance, c'est forcément entre 2 points.
Calculer la distance entre un point de référence (quelconque) et un segment (quelconque) n'a pas de sens, car la distance entre chaque point du segment par rapport au point de référence est forcément différente, sinon cela veut dire que ton segment est constitué d'un seul point (et donc que sa longueur est nulle).
Quand on parle de distance, c'est forcément entre 2 points.
Calculer la distance entre un point de référence (quelconque) et un segment (quelconque) n'a pas de sens, car la distance entre chaque point du segment par rapport au point de référence est forcément différente, sinon cela veut dire que ton segment est constitué d'un seul point (et donc que sa longueur est nulle).
- Edité par Deedolith il y a 14 minutes
C'est vrai dans la vie de tous les jours. Mais, dans certain domaines, on peut parler de la distance entre un point et un plan par exemple. Et dans ce cas, la distance, bien que variable en fonction du point, peut être utile pour savoir si le point en question se trouve d'un coté ou de l'autre du plan.
Quand on parle de distance, c'est forcément entre 2 points.
Calculer la distance entre un point de référence (quelconque) et un segment (quelconque) n'a pas de sens, car la distance entre chaque point du segment par rapport au point de référence est forcément différente, sinon cela veut dire que ton segment est constitué d'un seul point (et donc que sa longueur est nulle).
Bref, inutile d'enc... les mouches. La distance dont parle l'op est évidemment la distance euclidienne minimale entre l'ensemble des points du segment A et l'ensemble des points du segment B.
Idée générale : on peut exprimer les coordonnées des points d'une droite de façon paramétrique, en fonction d'une variable, avec 6 coefficients x0, y0, z0, a, b, c
x(t) = x0 + a.t
y(t) = y0 + b.t
z(t) = z0 + c.t
On fait pareil pour l'autre droite.
On développe le carré de la distance entre deux points d(t,t') = [x(t) - x'(t')]² + [y(t) - y'(t')]² + [z(t) - z'(t')]²
En dérivant et tout ça, on trouve le t' qui minimise d(t,t') en fonction des autres coeffs. Puis, puisqu'on a éliminé t', on trouve le t qui minimise. On a t, on a t', on a tout.
Si on tombe quelque part sur une infinité de solutions, c'est que les droites sont parallèles.
---
A partir de là on est presque sortis de l'auberge vis à vis des segments.
Un segment d'extrémités (x0,y0,z0) et (x1,y1,z1), on peut voir ça comme un truc avec x = x0+t.(x1-x0) avec t entre 0 et 1.
Donc on applique la technique du haut, et on voit si le t qu'on trouve est entre 0 et 1. Si ce n'est pas le cas, le point le plus proche, c'est un des deux bouts du segment.
Sinon c'est quoi le problème initial? Il se peut que tu soit en train de nous embarquer dans un XY probleme.
Eug
Distance entre 2 segments en 3D
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Eug
Eug
Eug