TP 2 - Inria

Transcription

TP 2 - Inria
Travaux Dirigés
no 2
Algorithmique Graphique
—Licence 2o année 2005-2006—
Positionnement & Intersections (1)
À partir de maintenant on suppose que l’on travaille en coordonnées réelles (IR2 ), dans
une fenêtre carrée (xmin , ymin , xmax , ymax ).
Dans ce TD on s’intéresse à quelques problèmes élémentaires de positionnement et
d’intersection.
x Exercice 1. Projection d’un point sur une droite
On donne trois points A(xa , ya ), B(xb , yb ) et C(xc , yc ) du plan.
On cherche à déterminer la projection orthogonale P (x, y) du point C sur la droite (AB), c’est-à-dire
le point de la droite tel que (AB) ⊥ (CP ).
C
B
B
C
A
P
A
P
☞
☞
☞
☞
☞
☞
Identifier les cas particuliers susceptibles de poser problème.
Caractériser à l’aide d’une équation paramétrique le fait que le point P cherché est sur (AB).
Caractériser le fait que les droites (AB) et (CP ) sont orthogonales.
En déduire les coordonnées de P .
Exploiter ce résultat pour déterminer si le point P trouvé appartient au segment [AB].
Ecrire une fonction double ProjPntDte(GXpoint A, GXpoint B, GXpoint C, GXpoint *P) réalisant
le calcul demandé.
☞ Ecrire un programme permettant de tester cet algorithme avec 3 points A, B et C contrôlables
(avec la fonction bool gx_SetControlPoint(GXpoint *pt, uint r) ).
x Exercice 2. Intersection de segments
Déterminer si deux segments du plan se coupent et, le cas échéant, trouver le point d’intersection, est
un calcul fondamental en infographie. Il nécessite donc un algorithme efficace et robuste.
On considère quatre points {A, B, C, D} de IR2 . On cherche l’intersection éventuelle des segments
[AB] et [CD].
☞ Soit P (x, y) un point du plan. Caractériser le fait que P ∈ (AB) et le fait que P ∈ [AB].
☞ Identifier les cas particuliers du problème.
☞ Comment construire sans calcul un vecteur orthogonal à la droite (AB) ?
☞ Caractériser le fait que les droites (AB) et (CD) se coupent puis que les segments [AB] et [CD]
se coupent.
☞ Ecrire une fonction bool InterSegment(GXpoint A, GXpoint B, GXpoint C, GXpoint D, GXpoint *I)
qui calcule le point I, intersection de [AB] et [CD]. Cette fonction renverra par ailleurs la valeur
TRUE ou FALSE selon que l’intersection existe ou non.
1
x Exercice 3. Calcul d’angle, orientation et positionnement dans un triangle
→
→
Un autre problème très classique consiste à évaluer l’angle α formé par deux vecteurs −
u et −
v (valeur,
−→
→
\
direction). Une application directe est l’évaluation de l’orientation d’un triangle (ABC) (avec −
u = AC
−
−
→
−
et →
v = AB).
\
Ce calcul servira par exemple à déterminer la position d’un point P par rapport au triangle (ABC)
B
v
A
Q
P
α
C
u
→
→
On considère deux vecteurs −
u et −
v de IR2 .
→
→
☞ Rappeler l’expression du produit scalaire −
u •−
v.
→
→
\
Comment cette valeur est-elle liée à l’angle α = −
u,−
v ?
→
−
→
−
☞ Mêmes questions pour le produit vectoriel u ∧ v .
\ et un point P de IR2 .
On considère maintenant un triangle (ABC)
☞ Proposer une méthode permettant de déterminer les valeurs en degrés des angles du triangle.
☞ Comment caractériser l’orientation du triangle ?
☞ Utiliser l’ensemble des résultats précédents pour caractériser la position de P par rapport au
triangle.
☞ Ecrire un programme interactif permettant de visualiser ces calculs.
2