salut .
soit un segment [ AB ] dans un repère (ox,oy) avec A(x1,y1) et B(x2,y2).
comment savoir si le point C(x3,y3) appartient a ce segment ?
Version imprimable
salut .
soit un segment [ AB ] dans un repère (ox,oy) avec A(x1,y1) et B(x2,y2).
comment savoir si le point C(x3,y3) appartient a ce segment ?
Etape 1 : A,B,C alignés => le determinant AB,AC est nul
AC=(x3-x1,y3-y1)
AB=(x2-x1,y2-y1)
AC.x*AB.y - AB.x*AC.y = 0
Etape 2 : C entre A et B => le produit scalaire CA,CB est négatif (ou nul)
CA=(x1-x3,y1-y3)
CB=(x2-x3,y2-y3)
CA.x*CB.x + CA.y*CB.y <= 0
Bonjour.
Etape 1 on peut aussi faire : produit vectoriel AB,AC = 0
salut les mathématiciens.
mon but est de déterminer l'ensemble des points appartenant a une ligne dessiner a l'écran(connaissant les coordonnées des extrémités)
j'ai réfléchi a un algorithme avec deux boucle for pour parcourir le rectangle englobant la ligne ,et tester pour chaque p(x,y) si elle appartient a la ligne.
ce que je veut savoir s'il on as une méthode plus efficace comme par exemple Bresenham.
merci
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // point de départ int x1=128,y1=128; // point d'arrivée int x2=200,y2=150; // vecteur int dx=(x2-x1), dy=(y2-y1); int max = Math.max(Math.abs(dx), Math.abs(dy)); // equation parametrique du segment for(int t=0;t<=max;t++) { int x = x1+(t*dx)/max; int y = y1+(t*dy)/max; // faire quelque chose avec le pixel (x,y) }
Une droite définie par un point A et un vecteur directeur U. Auquel cas, tout point M appartenant à la droite vérifie l'équation paramétrique:
M = A + t*U, où t est un réel
Dans notre cas, le vecteur directeur U est défini par les points A et B. Notre équation paramétrique devient donc:
M = A + t*AB, où t est un réel
Pour se limiter au segment AB (et non pas toute la droite), on va limiter les valeurs de "t".
Pour t=0, on a M=A
Pour t=1, on a M=B
donc pour t entre 0 et 1, on a M entre A et B
Donc, les points M entre A et B vérifient l'équation paramétrique:
M = A + t*AB, avec 0<=t<=1
C'est ce que fait le code que j'ai donné.