Quaternions

Transcription

Quaternions
QUATERNION
°
°
°
Arithmétique des quaternions
Rotation au moyen de quaternions
Convertir des matrices de rotation et des quaternions
Rick Parent, Animatique Algorithmes et techniques. Vuibert, Paris,
2003, 530p.
Définition d’un quaternion
Un quaternion peut être représenté à l’aide
- d’un quadruplet de nombres réels q ≡ [s, x, y, z]
ou encore,
- sous une forme plus abrégée, q ≡ [s, v],
s ∈ℜ,
v un vecteur 3D.
Les opérations suivantes sont définies :
Addition de 2 quaternions :
(i) [s1, v1] + [s2, v2] = [s1 + s2, v1 + v2],
s1, s2 ∈ℜ,
v1, v2 des vecteurs 3D
Multiplication d’un quaternion par un scalaire :
(ii) λ[s, v] = [λ s, λv],
λ, s ∈ℜ,
v un vecteur 3D
Multiplication de 2 quaternions :
(iii) [s1, v1] . [s2, v2] = [s1s2 - v1.v2, s1v2 + s2v1 + v1 x v2],
v1, v2 des vecteurs2 3D
s1, s2 ∈ℜ,
produit scalaire
produit vectoriel
Différentes propriétés des quaternions
a. La multiplication de 2 quaternions n’est pas commutative.
[s1, v1] . [s2, v2] ≠ [s2, v2] . [s1, v1],
s1, s2 ∈ℜ,
v1, v2 des vecteurs 3D
b. La multiplication de quaternions est associative.
([s1, v1] . [s2, v2]) . [s3, v3] = [s1, v1] . ([s2, v2] . [s3, v3]),
s1, s2 , s3 ∈ℜ, v1, v2 et v3 des vecteurs 3D.
c. La multiplication de 2 quaternions dont les vecteurs respectifs
sont orthogonaux équivaut au produit vectoriel de ces 2 vecteurs.
[0, v1] . [0, v2] = [0, v1 x v2]
⇔ v1 . v2 = 0 v1, v2 des vecteurs 3D
d. [1, (0, 0, 0)] est l’élément neutre de la multiplication.
[s, v] . [1, (0, 0, 0)] = [s, v]
s ∈ℜ, v un vecteur 3D.
3
Différentes propriétés des quaternions
e. L’inverse d’un quaternion q ≡ [s, v], noté q-1 est obtenu
comme suit :
q-1 = [s, -v] / (s2 + || v ||2)
s ∈ℜ, v un vecteur 3D
Ainsi, q . q-1 = q-1 . q = [1, (0, 0, 0)].
Définition de la norme d’un quaternion :
|| q ||2 = s2 + || v ||2
Par conséquent, q / || q || est appelé quaternion unitaire.
f. (p . q) -1 = q-1 . p-1
g. En posant q ≡ [s, w] et Tq(v) = q . [0, v] . q-1 , on obtient :
- Tq(v) : un quaternion de la forme [0, u], où u est un vecteur 3D.
- Tq(Tp(v)) = Tq.p (v).
- Tq-1(v) = q-1 . [0, v] . q
4
∀λ ≠ 0.
- Tλq(v) = Tq(v),
Transformation de rotation du vecteur v d’un
angle θ autour d’un des axes principaux
h. Tθ,w(v) = [ cos (θ/2), sin (θ/2) w] . [0, v] . [ cos (θ/2), sin (θ/2) w]-1
où
w = e1
w = e2
w = e3
si la rotation se fait autour de l’axe des x,
si la rotation se fait autour de l’axe des y,
si la rotation se fait autour de l’axe des z.
Exemple :
La transformation de rotation du vecteur v d’un angle θ autour de
l’axe des x nous donne comme prévu :
[0, Rx(θ) v]
où Rx(θ) =
1
0
0
0
0
cos θ - sin θ
sin θ cos θ
5
Transformation de rotation du vecteur w d’un angle
θ autour d’un axe de rotation v unitaire quelconque
i. Tθ,v(w) = [ cos (θ/2), sin (θ/2) v] . [0, w] . [ cos (θ/2), sin (θ/2) v]-1
Note :
la transformation est obtenue comme suit:
i) faire coïncider le vecteur v avec l'axe des Z;
ii) rotation d'un angle θ autour de l'axe des Z;
iii) se ramener à l'emplacement original du vecteur.
(0, υy, υz)
Faire coïncider le vecteur v avec l'axe des Z
Cette transformation affine est obtenue ainsi:
Z
β
υ
- une rotation d'un angle β autour de l'axe des X: RXβ
Y
cos β = υz / ||(0, υy, υz)||
sin β = υy / ||(0, υy, υz)||
où (0, υy, υz) = ProjYZυ.
X
6
(υx, 0, ||(0, υy, υz)||)
Z
1
α
- une rotation d'un angle α autour de l'axe des Y: RYα
cos α = ||(0, υy, υz)||
sin α = -υx.
X
Nous avons alors:
Tθ,v(w) = RX-β RY-α RZθ RYα RXβ
Note :
Le quaternion représentant la rotation du vecteur 3D w1 à w2 est :
[cos (θ/2),
sin (θ/2) (w1 x w2 )] où cos θ = w1 . w2
7
sin θ
Y
Composition de transformations de rotation
Soient Tθ1,v1(w) et Tθ2,v2(w), avec
Tθ2,v2(Tθ1,v1(w) )
q1 = [ cos (θ1/2), sin (θ1/2) v1],
q2 = [ cos (θ2/2), sin (θ2/2) v2],
v1 et v2 sont unitaires,
= q2 . (q1 [0, w] q1-1) . q2-1
= (q2 . q1) . [0, w] . (q1-1 . q2-1)
= (q2 . q1) . [0, w] . (q2 . q1)-1
= Tq2.q1(w)
Cas particulier : Une rotation avec son inverse donne l’identité.
T-θ,v(Tθ,v(w) ) = [1, 0] . [0, w] [1, 0] -1 = [0, w].
Tout multiple scalaire d’un quaternion
représente la même rotation.
Tλq(w) = Tq(w), ∀λ ≠ 0
avec q = [ cos (θ/2), sin (θ/2) v].
8
C’est le cas de λ = -1.
Remarque :
Convertir des matrices de rotation et des
quaternions
Pourquoi ?
Les quaternions sont souvent utilisés pour interpoler des orientations et
le résultat est converti en une matrice de rotation, de façon à pouvoir la
combiner avec d’autres matrices liées aux opérations d’affichage.
Procédure
q → matrice de rotation
Soit q = [s, w], ||q|| = 1, calculons d’abord q . [0, v] . q-1 :
Tq(v) = q . [0, v] . q-1
= [s, w] [0, v] [s, -w]
= [- w.v, s v + w x v] [s, -w]
= [0, (w.v) w + s2v + s(w x v) – (s v + w x v) x w]
= [0, (w.v) w + s2v + 2s(w x v) – (w x v) x w]
= [0, 2(w.v) w + s2v + 2s(w x v) – (w . w) v].
9
Convertir des matrices de rotation et des
quaternions
En posant w = (x, y, z),
où M ≡
Procédure
on obtient :
Tq(v) = [0, M v]
1 – 2y2 – 2z2 2xy –2sz
2xy + 2sz
1 – 2x2 – 2z2
2xz – 2sy
2yz + 2sx
2xz + 2sy
2yz – 2sx
1 – 2x2 – 2y2
matrice de rotation → q
Soit la matrice de rotation suivante,
r0,1
R≡
r0,0
r1,0
r1,1
r2,0
r2,1
r02
r12
r22
en examinant M, on obtient :
- la somme des éléments diagonaux donne 4s2 – 1,
- les éléments diagonaux peuvent également être utilisés pour résoudre
10
les termes restants.
diapositive suivante
Convertir des matrices de rotation et des
quaternions
s=
r0,0 + r1,1 + r2,2 + 1
2
r0,0 = 1 – 2y2 – 2z2 = 1 – 2 (y2 + z2) = 1 – 2 (1 - x2 - s2) = -1 + 2x2 + 2s2
x=
r0,0 + 1 – 2 s2
2
y=
r1,1 + 1 – 2 s2
2
z=
r2,2 + 1 – 2 s2
2
Note : Les racines carrées pour obtenir x, y et z peuvent être évitées
si s ≠ 0 :
r2,0 – r0,2 = -4 sy,
r2,1 – r1,2 = 4 sx.
r1,0 – r0,1 = 4 sz,
Représentation de
phénomènes naturels
Un quaternion peut aussi être défini comme suit :
Q=w+xi+yj+zk
où
w, x, y et z sont des nombres réels,
i, j et k désignent des coefficients imaginaires distincts,
avec
i2 = j2 = k2 = -1,
ij = k, jk = i, ki = j, ji = -k, kj = -i, ik = -j.
Nous verrons plus loin comment nous pouvons utiliser les
quaternions pour représenter des phénomènes naturels.
12
Arithmétique des quaternions
Soient Q = w + x i + y j + z k = (w, (x, y, z))
R = a + b i + c j + d k = (a, (b, c, d)),
(i) Q + R = (w + a) + (x + b) i + (y + c) j + (z + d) k
(ii) Q - R = (w - a) + (x - b) i + (y - c) j + (z - d) k
(iii) Q R = (wa – xb – yc - zd)
+ (wb + xa + yd - zc) i
+ (wc – xd + ya - zb) j
+ (wd + xc – yb + za) k
(iv) || Q ||2 = w 2 + x 2 + y 2 + z 2
(v) Conjugué de Q (Q*): w - x i - y j - z k
(vi) Q-1 = Q* / ||Q||
(vii) Q / R = R-1 Q
etc.
13
Conclusion
L’usage des quaternions nous permettra d’interpoler entre des
orientations afin de générer une image d’images clés.
14