Rappels mathématiques

publicité
Boı̂te à outils mathématiques de base pour
l’infographie et l’animation par ordinateur
Yves Chiricota, professeur
DIM, UQAC
Cours 8TRD147
11 Janvier 2017
2
Il est impossible d’envisager l’étude des méthodes de l’animation par ordinateur sans des connaissance en algèbre linéaire et en calcul. Les approches plus
poussées de l’animation par ordinateur (comme la simulation de surfaces déformables
et de certains phénomènes physiques) demandent même la maı̂trise de la géométrie
différentielle. Nous verrons ici la base mathématique nécessaire au cours. Ce document constitue en quelque sorte une boı̂te à outils mathématiques pour l’animation
par ordinateur.
1
Algèbre matricielle
En gros, on pourrait dire que l’algèbre matricielle est l’étude de l’arithmétique des
matrices. On muni l’ensemble des matrices d’une opération de somme et d’une
opération de produit. Cependant, dans le cas des matrices, les choses ne sont pas
aussi simple que si on travaille avec les nombres réels. Il faut tenir compte du format
des matrices, elles ne sont pas toutes inversible, etc.
Grâce à l’algèbre matricielle, il est possible de représenter des concepts beaucoup plus riches que ceux inhérents à partir de l’algèbre des nombres réels uniquement. En effet, grâce aux vecteurs et aux matrice, on peut représenter sur ordinateur des objects en plusieurs dimensions. Ces concepts nous servent aussi à
représenter certaines transformation de l’espace, en particulier celles nécessaires à
simuler des caméras virtuelles. Il serait trop long d’énumérer ici toutes les applications de l’algèbre linéaire en infographie. Nous allons voir les éléments essentiels
pour le cours 8TRD147. Les thèmes abordés ici constituent le minimum nécessaire
à entreprendre l’étude de l’infographie et l’animation par ordinateur.
1.1
Points et vecteurs
Intuitivement, on peut définir le plan euclidien comme étant un ensemble de points
pour lesquels on peut mesurer les distances et les angles. Notons qu’un point sert à
indiquer une position. L’espace euclidien de dimension trois se définit aussi comme
un ensemble de points pour lesquels on peut mesurer des angles et des distances. A
priori, dans un espace euclidien, aucun point ne se distingue des autres (il n’y a pas
d’origine) et il n’y a pas de système de coordonnées. La notion d’espace euclidien
est très générale. En particulier, l’espace Rn des points exprimés à l’aide de trois
1. ALGÈBRE MATRICIELLE
3
nombres réels forme un espace euclidien.
Un espace vectoriel est un ensemble de vecteurs muni d’opérations de somme
et de produit par un scalaire qui satisfont un certain nombre de propriétés. Les
vecteurs servent à indiquer des directions d’un point à un autre. Plus formellement,
un espace vectoriel réel (V, +, ·) est la donnée d’un ensemble de vecteurs V muni de
deux opérations
+:V×V →V
et
·:R×V →V
satisfaisant les propriétés suivantes:
1. Pour tous u, v ∈ V, on a u + v = v + u,
2. Pour tous u, v, w ∈ V on a u + (v + w) = (u + v) + w,
3. Il existe un élément spécial 0 ∈ V tel que pour tout u ∈ V, on a u + 0 = u,
4. Pour tout u ∈ V, il existe un élément v ∈ V tel que u + v = 0 (en d’autres
mot, chaque élément possède un opposé),
5. Pour tout u ∈ V, on a 1 · u = u,
6. Pour tous α, β ∈ R, pour tout u ∈ V, on a α(β · u) = (αβ) · u
7. Pour tous α, β ∈ R, pour tout u ∈ V, on a (α + β) · u = α · u + β · u
8. Pour tout α ∈ R, pour tous u, v ∈ V, on a α · (u + v) = α · u + α · v
Ces huit propriétés constituent les règles de calcul (permettant de simplifier des
expression, etc.) dans un espace vectoriel. Tout calcul valide sur les vecteurs doit
pouvoir s’exprimer comme une suite d’opération correspondant à ces règles.
Exercice: Déterminer l’interprétation géométrique des deux opérations.
Un sous-espace vectoriel de V est un sous-ensemble de vecteur U tel que si
u, v ∈ U et α ∈ R, alors u + v ∈ U et αv ∈ U.
4
L’espace R3 muni de la somme et du produit par un scalaire usuels forme un
espace vectoriel. On peut voir Rn de deux points de vue: comme un espace euclidien
ou comme un espace vectoriel.
Une des particularité qui distingue un espace euclidien d’un espace vectoriel est
la présence d’un point qui représente l’origine de l’espace vectoriel. Dans le cas de
de Rn , n’importe quel point pourrait servir d’origine, mais on utilise habituellement
le point (0, 0, . . . , 0). Étant donné un espace euclidien, on peut en faire un espace
vectoriel en choisissant un point, disons O, qui servira d’origine. Par la suite, on
fait correspondre à chaque point P de l’espace euclidien un vecteur V (P ) de l’espace
vectoriel en lui associant le segment de droite OP . Exercice: définir la somme et le
produit par un scalaire de telle sorte que cette construction donne un espace vectoriel.
En toute généralité, les vecteurs d’un espace vectoriel réel peuvent être n’importe
quel type d’objets, pourvu que les conditions précédentes soient respectées. On peut
définir des espaces vectoriels de fonctions, de quaternions, etc.
Il est utile de représenter les vecteurs à l’aide de coordonnées. L’idée est de
choisir un ensemble B = {b1 , b2 , . . . bn } de n vecteurs linéairement indépendants et de
les utiliser pour exprimer n’importe quel vecteur v de l’espace en calculant l’unique
décomposition
v = a1 b 1 + a2 b 2 + · · · + an b n ,
où an ∈ R. Les nombres ai sont appelés coordonnées du vecteur v relativement à la
base B. Il est intéressant de remarquer que (a1 , a2 , . . . , an ) est un vecteur de Rn . Il
faut faire attention ne pas confondre coordonnées et vecteur dans le cas de Rn .
Pour la suite, nous ne considérerons que l’espace vectoriel Rn muni de la somme
de vecteur usuelle et du produit par un scalaire usuel:
u + v = (u1 , u2 , . . . , un ) + (v1 , v2 , . . . vn ) = (u1 + v1 , u2 + v2 , . . . , un + vn )
et
α · u = α · (u1 , u2 , . . . , un ) = (αu1 , αu2 , . . . , αun ).
Exercice: Vérifier que les huit propriétés sont satisfaites dans ce cas.
1. ALGÈBRE MATRICIELLE
1.2
5
Systèmes de coordonnées
Comme nous l’avons vu, on peut représenter les vecteurs à l’aide de systèmes de
coordonnées. L’idée est de choisir une base ordonnéeP{b1 , b2 , . . . bn } pour exprimer
les éléments de Rn comme une combinaison linéaire i ai bi , avec an ∈ R. En fait,
lorsqu’on considère un vecteur (u1 , u2 , . . . un ), c’est (dePmanière implicite) relativement à la base canonique de Rn : (u1 , u2 , . . . un ) =
i ui ei , où ei est le vecteur
ième
comportant des 0 à chaque position sauf à la i
où on retrouve un 1 (e1 =
(1, 0, 0, 0, . . . 0), e2 = (0, 1, 0, 0, . . . 0), . . .. Le concepts de systèmes de coordonnées
permet de simplifier les calculs inhérents aux caméras virtuelles et de faciliter la
représentation des objets géométrique en infographie, entre autres choses.
On passe d’un système de coordonnées à un autre à l’aide de la multiplication
matricielle (exercice).
1.3
Transformation de l’espace Euclidien
On peut appliquer certaines opérations aux vecteurs et aux points. Les principales
opérations sont la rotation autour d’un axe, la translation selon un vecteur et le
changement d’échelle. On utilise généralement les matrices pour représenter ces
transformations, lorsqu’elles sont linéaires. L’utilisation des matrices présentes de
grands avantages car elle permettent une implémentation facile et que si T est une
transformation, représentée par la matrice MT , appliquée à un vecteur V , on obtient
T (V ) en multipliant avec M et V , c-à-d T (V ) = M V . De plus, la composition de
transformation se traduit par le produit des matrices correspondantes. Cela présente
un avantage relativement à la performance du calcul lorsque l’on doit appliquer la
même série de transformations à plusieurs vecteur comme c’est souvent le cas en
infographie.
Par exemple, la matrice suivant effectue une rotation autour de l’origine d’angle
θ autour du vecteur (0, 0, 1):


cos θ sin θ 0
 − sin θ cos θ 0 
0
0
1
6
La matrice suivant effectue représente une dilatation d’un vecteur (avec une
valeur spécifique pour chaque axe):


sx 0 0
 0 sy 0 
0 0 sz
Coordonnées homogènes
Pour être en mesure de représenter une translation d’un vecteur de dimension trois
à l’aide d’une matrice, on est forcé de travailler en dimension quatre. On représente
alors les vecteurs de R3 à partir de vecteurs de R4 à l’aide de coordonnées homogènes.
La représentation en coordonnées homogènes d’un point (x, y, z) est (wx, wy, wz, w),
où w 6= 0. Le point (X, Y, Z, W ), avec W 6= 0, correspond au point (X/W, Y /W, Z/W )
dans R3 . En fait, on a la correspondance:
(x, y, z) ↔ (wx, wy, wz, w) = w(x, y, z, 1),
avec w ∈ R. On remarquera que plusieurs points en coordonnées homogènes correspondent à (x, y, z). En fait, point de l’espace R3 se trouve associé à une droite de
l’espace R4 . On choisit habituellement le représentant (1 · x, 1 · y, 1 · z, 1) = (x, y, z, 1)
pour représenter (x, y, z).
La matrice

1
 0

 0
0
0
1
0
0
0
0
1
0

tx
ty 

tz 
1
représente une translation de (tx , ty , tz ) d’un vecteur (x, y, z) exprimé en coordonnées homogènes.
Un des grand avantage de la notation matricielle pour représenter les opérations
est que la composition des opérations se calcule à l’aide du produit de matrice.
Ce calcul est souvent intégré dans les cartes graphiques ce qui permet d’obtenir de
1. ALGÈBRE MATRICIELLE
7
bonnes performances. Il est de plus intéressant de noter que l’inverse d’une opération
s’obtient tout simplement en prenant l’inverse matriciel.
Par exemple, considérons un cube dont les coins opposés sont (2, 3, 4) et (3, 4, 5)
et supposons que nous désirions effectuer une rotation d’angle θ par rapport à l’axe
des z des six coins du cube. Il suffira d’appliquer une translation par le vecteur
(−2, −3, −4) au coins du cube, ensuite la rotation, et ensuite la translation (2, 3, 4).
Cette suite d’opération correspond au produit des matrices:
T −1 RT,
où

1
 0
T =
 0
0
1.4
0
1
0
0


0 −2
cos θ sin θ 0 0


0 −3 
− sin θ cos θ 0 0
et R = 

1 −4 
0
0
1 0
0 1
0
0
0 1


.

Vecteurs
Produit scalaire
Le produit scalaire de deux vecteurs est défini par:
hu, vi = u1 v1 + u2 v2 + · · · + un vn ,
où u = (u1 , u2 , . . . , un ) et v = (v1 , v2 , . . . , vn )).
La longueur |u| d’un vecteur u s’obtient avec la formule: |u| =
p
hu, ui.
• On remarquera que si u et v sont perpendiculaire, on a hu, vi = 0.
• hu, vi = hv, ui.
• Soit α ∈ R, on a hαu, vi = αhu, vi = hu, αvi.
8
• On normalise un vecteur u avec
u
.
|u|
• Rappelons la formule
hu, vi
= cos θ,
|u| |v|
où θ est l’angle entre les vecteurs u et v. Cette formule découle de la loi des
cosinus: Si la longueur des cotés d’un triangle sont a, b et c et θ est l’angle entre
les cotés correspondant aux longueurs a et b, alors on a c2 = a2 + b2 − 2ab cos θ.
• On a
hu, vi < 0 si θ > π2 ,
hu, vi = 0 si θ = π2 ,
hu, vi > 0 si θ < π2 .
Produit vectoriel
Le produit vectoriel de deux vecteur de R3 est défini par la formule suivante:


i j k
u × v = det  u1 u2 u3 
v1 v2 v3
La valeur de ce déterminant est égal à l’aire du parallélogramme défini par les
deux vecteurs.
On a les propriétés suivantes:
• u × v = −v × u.
• hu × v, ui = hu × v, vi = 0.
Le produit vectoriel est intrinsèquement lié à la notion l’orientation dans R3 .
Selon que l’on travaille dans un système main droite ou main gauche, on obtient
l’orientation du vecteur u × v formant un repère orthogonal avec la main et en
imaginant que l’index correspond à u et le majeur à v. L’orientation du vecteur
u × v est alors donné par le pouce.
1. ALGÈBRE MATRICIELLE
9
Réflexion
Le calcul de réflexions est fondamental en infographie et en animation. Les applications sont nombreuses: détection de collision, illumination, etc.
Tout d’abord, calculons la projection d’un vecteur sur un autre. Considérons
deux vecteurs U et W . La projection de u sur w est un vecteur v = αw tel que
hu − v, wi = 0. Il s’en suit hu − v, wi = hu, wi − hv, wi = hu, wi − hαw, wi =
La projection de u sur w est donc le vecteur
hu, wi − αhw, wi, d’où α = hu,wi
|w|2
hu, wi
w.
|w|2
La réflexion de u par rapport à w est l’unique vecteur u0 de même longueur
que u, inscrit dans le plan définit par u et w, qui fait le même angle que u avec w et
différent de u.
w
u
u
,
v
En s’aidant de la figure, on voit que u0 + 2(u − v) = u, d’où
u0 = 2v − u = 2
hu, wi
w − u.
|w|2
10
2
Courbes et surfaces paramétrées
L’utilisation de courbes et surfaces est fondamentale en animation par ordinateur.
Les courbes servent à décrire des trajectoires, des paramètres qui varient en fonction
du temps, etc. Quant aux surfaces, elle permettent de modéliser les objets qui se
retrouvent dans les scènes. On peut utiliser celles-ci pour représenter des objets
rigides tel que des habitations, des véhicules, etc. Elle servent aussi à modéliser des
objets déformables comme les vêtements, les vagues, etc.
2.1
Courbes
Pour nous, une courbe paramétrée est une fonction continue β : I → Rn , avec
I = [a, b] un intervalle fermé. Il est parfois pratique d’utiliser un l’intervalle normalisé
[0, 1]. Par exemple, β(t) = (cos(t), sin(t), t), avec t ∈ [0, 6π] représente une courbe (à
quoi correspond-elle?).
Une courbe paramétrée peur servir à représenter la position d’un objet en
fonction du temps. Elle peuvent aussi servir à représenter des mouvement de caméra.
On utiliser alors une courbe avec n = 6, car une caméra possède généralement six
degrés de liberté (quel sont-ils?).
Si on interprète une courbe β(t) comme la position d’un objet en fonction du
temps, la dérivée β 0 (t) donne la vitesse instantanée au temps t. La distance parcourue
entre les temps t0 et t1 s’obtient en calculant l’intégrale suivante:
Z t1
|β 0 (t)| dt.
t0
La longueur totale de la courbe est
Z b
|β 0 (t)| dt.
a
Ru
Une courbe paramétrée par longueur est telle que a |β 0 (t)| dt = t. En d’autres
termes, la longueur au point u est égale à u (le paramètre est égal à la longueur de
la courbe).
2. COURBES ET SURFACES PARAMÉTRÉES
2.2
11
Surfaces
Pour nous, une surface paramétrée est une fonction continue σ : I1 ×I2 → Rn , où I1 =
[a, b] et I2 = [c, d] sont des intervalles fermés et connexes. On utilise parfois I1 = I2 =
[0, 1]. Voici un exemple de surface paramétrée: σ(u, v) = (sin (u) cos (v) , cos (u) cos (v) , sin (v)),
avec u ∈ [0, 2π], et v ∈ [0, π].
Étant donné une surface σ = σ(u, v), il est parfois nécessaire de calculer le plan
tangent au point σ(u0 , v0 ) (par exemple pour calculer comment un objet projeté sur
le surface rebondit). On l’obtient à partir des dérivées partielles évaluées en (u0 , v0 ).
Le plan est définit par le point
σ(u0 , v0 )
et les vecteurs
∂σ
∂σ
(u0 , v0 ) et
(u0 , v0 ).
∂u
∂v
et σv = ∂σ
.
On utilise aussi les notations σu = ∂σ
∂u
∂v
L’utilisation du vecteur normal N (u0 , v0 ) en un point (u0 , v0 ) de la surface est
fondamental pour le calcul de l’éclairage et certaines techniques de rendu de scènes
(tel le bump mapping). Ce vecteur est tout simplement obtenu par la formule
N (u0 , v0 ) =
N
σ (u0, v0)
∂σ
∂σ
(u0 , v0 ) ×
(u0 , v0 ).
∂u
∂v
σu
σv
σ
Il est clair que ce vecteur est perpendiculaire au plan tangent à la surface σ au
point σ(u0 , v0 ).
12
3
Courbes et surfaces polygonales
Les courbes et surfaces telles que nous venons de les voir sont des objets mathématiques
appartenant au domaine continu. Leur codage sous la forme de structures de données
s’impose pour être en musure de faire dessiner ces objets par un moteur graphique.
Le principe général pour ce codage est d’échantillonner le domaine de définition
de la courbe ou de la surface et de créer de segments ou des triangles à partir de cete
échantillonnage.
Pour une courbe, β : [a, b] → Rn , on définit les segments
[β((a + i
(b − a)
(b − a)
), β((a + (i + 1)
],
n
n
avec i = 0, 1, . . . , n − 1. Le nombre se segment sera n − 1.
Pour une surface σ : [a, b] × [c, d] → Rn , on calcule une grille formée des points
P (i, j) suivant
σ(a + i
d−c
b−a
,c + j
),
n
m
où i = 0, 1, . . . , n et j = 0, 1, . . . , m. La grille contiendra (n + 1)(m + 1) points.
Cette grille est ensuite utilisée pour définir les triangles qui serviront à approximer la surface. Cette opération s’appelle “discrétiser” la surface.
4
Géométrie dans R3 .
Le “calcul géométrique” revêt une importance particulière en infographie et en animation par ordinateur. Les applications sont nombreuses: algorithmes de lancé de
rayon, détection de collision dans la simulation, etc.
4. GÉOMÉTRIE DANS R3 .
4.1
13
Coplanarité
Considérons deux vecteurs non co-linéaires U, V ∈ R3 . Un vecteur W est co-planaire
à U et V s’il existe des valeurs α, β ∈ R3 telles que W = αU + βV . On peut donc
déterminer la co-planarité en résolvant le système d’équations linéaires W = αU +βV .
On ontient alors les coordonnées de W relativement aux vecteur U et V .
Une autre approche pour déterminer si W est co-planaire avec U et V est de
calculer le déterminant det(W, U, V ).
Il est parfois utile de déterminer si quatre points A, B, C, D dans R3 sont coplanaire ou non. On peut le déterminer comme suit en posant U = B −A, V = C −A
et W = D − A et en appliquant la méthode précédente.
4.2
Projection d’un point dans un plan
Considérons le plan Π (passant par l’origine) défini les vecteurs (non colinéaires) U et
V . La projection Q d’un point W dans le plan Π s’obtient en résolvant les équations
suivantes:
hW − Q, U i = 0,
hW − Q, V i = 0,
hW − Q, U × V i = 0.
4.3
Intersection de deux droites planaires
La forme paramétrique de la droite qui passe par les points X et Y dans R3 est
X + t(Y − X). On remarquera que c’est un cas particulier de courbe. Considérons
les deux droites
d0 (t) = P0 + t(P1 − P0 )
et
d1 (t) = Q0 + t(Q1 − Q0 )
14
avec P0 = (x0 , y0 ), P1 = (x1 , y1 ), Q0 = (u0 , v0 ), Q1 = (u1 , v1 ). On trouve l’intersection
en posant d0 (a) = d1 (b) et en résolvant pour a et b le système de deux équations
deux inconnues.
4.4
Test pour déterminer si un point est à l’intérieur d’un
triangle
Soit P0 , P1 , P2 les points définissant le triangle non dégénéré. Considérons un point
W co-planaire avec le triangle (si le point n’est pas inscrit dans le même plan, il n’est
pas à l’intérieur).
Exprimer le vecteur W − P0 comme combinaison linéaire des vecteurs P1 − P0
et P2 − P0 , c.-à-d. W − P0 = α(P1 − P0 ) + β(P2 − P0 ). Si α + β ≤ 1, 0 ≤ α et 0 ≤ β,
alors W est à l’intérieur du triangle.
4.5
Intersection d’une droite et d’un plan passant par l’origine
dans R3 .
Supposons la droite définie à partir de deux points P et Q. Soit U et V deux
vecteurs générateurs du plan. L’intersection W de la droite et du plan est de la
forme W = Q + α(P − Q). On trouve α en résolvant le système d’équation suivant:
hU × V , Q + α(P − Q)i = 0.
4.6
Intersection d’une droite et d’un triangle dans R3 .
On calcule l’intersection W de la droite et du plan. On détermine ensuite si W est
à l’intérieur du triangle.
Téléchargement