Rotace ve 3D a kvaterniony Eva Blažková a Zbyněk Šír MÚ UK Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 1 / 16
Eulerovy úhly http://www.youtube.com/watch?v=upsmnytvqqi Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 2 / 16
Eulerovy úhly - maticový zápis R(α, β, γ) = cos α sin α 0 cos β 0 sin β 1 0 0 sin α cos α 0 0 1 0 0 cos γ sin γ 0 0 1 sin β 0 cos β 0 sin γ cos γ Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 3 / 16
Eulerovy úhly - nevýhody závislost na souřadném systému souřadný systém je lokální vůči tělesu závislost na pořadí rotací složitý inverzní problém singularity (gimbal lock)... Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 4 / 16
William Rowan Hamilton 1805-1865 1835 - komplexní čísla zkouší vymyslet něco podobného pro 3D geometrii Every morning on my coming down to breakfast, your little brother William Edwin, and yourself, used to ask me: Well, Papa, can you multiply triplets? Whereto I was always obliged to reply, with a sad shake of the head: No, I can only add and subtract them. 16. října 1843 objev kvaternionů vyryl jejich rovnici do Broughamského mostu po zbytek života se věnoval jejich vlastnostem Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 5 / 16
Kvaterniony - definice H = {q q = a + bi + cj + dk, a, b, c, d R, i 2 = j 2 = k 2 = ijk = 1} zápis H q = a + bi + cj + dk = (a, v), kde s R, v = (b, c, d) R 3 Sčítání q 1 + q 2 = (s 1, v 1 ) + (s 2, v 2 ) = (s 1 + s 2, v 1 + v 2 ) Násobení q 1 q 2 = (s 1 + x 1 i + y 1 j + z 1 k) (s 2 + x 2 i + y 2 j + z 2 k) = (s 1 s 2 x 1 x 2 y 1 y 2 z 1 z 2 ) + (s 1 x 2 + s 2 x 1 + y 1 z 2 y 2 z 1 )i + (s 1 y 2 + s 2 y 1 + x 2 z 1 x 1 z 2 )j + (s 1 z 2 + s 2 z 1 + x 1 y 2 x 2 y 1 )k q 1 q 2 = (s 1, v 1 ) (s 2, v 2 ) = (s 1 s 2 v 1 v 2, v 1 v 2 + s 1 v 2 + s 2 v 1 ) není komutativní 1 i j k 1 1 i j k i i -1 k -j j j -k -1 i k k j -i -1 j i k Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 6 / 16
Definice skalární kvaternion - nulová vektorová část ryzí kvaternion - nulová skalární část opačný kvaternion ke kvaternionu q = (s, v) je kvaternion q = ( s, v). Mezi kvaterniony existuje jednotkový prvek vůči násobení 1 = (1, (0, 0, 0)), tedy q1 = 1q = q. konjugovaný kvaternion q = (s, v) = (s, v). norma kvaternionu q = (s, v) = (s, (x, y, z)): q = s 2 + x 2 + y 2 + z 2 = qq. Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 7 / 16
Maticové zápisy kvaternionů Prvky 1, i, j, k můžeme reprezentovat jako komplexní matice ( ) ( ) 1 0 i 0 1 =, i =, 0 1 0 i ( ) ( ) 0 1 0 i j =, k =. 1 0 i 0 Pro kvaterniony máme maticové zápisy ( g h s + xi + yj + zk = g + hj = h ḡ kde g = s + xi a h = y + zi. ) = s x z y x s y z z y s x y z x s, Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 8 / 16
Jednotkové kvaterniony inverzní kvaternion k nenulovému kvaternionu q je kvaternion q 1 = q q 2. jednotkový kvaternion, je každý kvaternion, pro který platí: q = 1 množinu všech jednotkových kvaternionů označujeme H 1 Jedná se o multiplikativní grupu. Pro q, q 1 H 1 platí: qq 1 = 1 a q 1 = q. Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 9 / 16
Rotace ve 3D Každý jednotkový kvaternion q lze zapsat v následujícím tvaru: q = (cos α, n sin α), kde n je jednotkový vektor v R 3 a α [0, π]. Věta: Pro pevný jednotkový kvaternion q je zobrazení R 3 R 3 r qr q rotací kolem osy n o úhel 2α proti směru hodinových ručiček. Pro nejednotkový kvaternion p máme kde q = p p. prp 1 p = pr p 2 = p p r p p = qr q, Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 10 / 16
Rotace ve 3D - Rodriguesova formule Jak spočítáme rotaci kolem jednotkového vektoru r R 3 kolem vektoru n o úhel θ. r = r 1 + r 2 r 1 projekce do n, r 1 = (r n)n r 2 kolmý k n, r 2 = r r 1 v (r )2 θ r2 v kolmý k n, r 2, v = n r 2 = n r r1 = (r )1 (r ) 2 = r 2 cos θ + v sin θ n (r ) 1 = r 1 r = (1 cos θ)(r n)n + r cos θ + (n r) sin θ r r Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 11 / 16
Formule pro kvaterniony Co udělá s ryzím kvaternionem r zobrazení r qr q, kde q je jednotkový kvaternion? můžeme psát q = (cos α, n sin α), kde n = 1 využijeme vzorce v 1 (v 2 v 3 ) = (v 1 v 3 )v 2 (v 1 v 2 )v 3 upravíme (s, v)(0, r)(s, v) 1 = (0, (s 2 v v + 2(v r)v + 2s(v r)) provedeme substituci s = cos α and v = n sin α dostáváme (s, v)(0, r)(s, v) 1 = (0, (1 cos 2α)(r n)n + r cos 2α + (n r) sin 2α) Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 12 / 16
Rotace pomocí kvaternionů Theorem (Euler) Složení dvou rotací je opět rotace Důkaz. q 2 (q 1 pq 1 1 )q 1 2 = (q 2 q 1 )p(q 2 q 1 ) 1 Theorem Zobrazení, které q přiřadí zobrazení v qvq 1 je 2:1 homomorpfismus mezi grupou jednotkových kvaternionů a SO 3. Důkaz. q dává stejnou rotaci jako q. jednotkové kvaterniony jsou dvojitým nakrytím SO 3 dostaneme z toho Hopfovu fibraci S 3 S 2, kde fíbry jsou S 1. Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 13 / 16
3D rotace pomocí kvaternionů Jednotkové kvaterniony q = (cos α, n sin α), kde n = 1, α [0, π]. Pro pevné q je r qr q (1) rotace kolem osy n o úhel 2α proti směru hodinových ručiček Zjevně q a q dávají stejnou rotaci Pro nejednotkový kvaternion p máme prp 1 p = pr p 2 = p p r p = qr q, (2) p takže vlastně točíme jednotkovým kvaternionem q = formule (1). p p pomocí Jako cvičeníčko: jak vypadají všechny jednotkové kvaterniony, které rotují vektor [1, 0, 0] na vektor [0, 1, 0]? Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 14 / 16
Interpolace poloh objektu ve 3D Máme 2 polohy objektu dané jednotkovými kvaterniony {q 0, q 1 } a chceme přejít spojitě od jedné ke druhé. Nejjednoduší je LERP (linear interpolation), tedy vypočítat q t = (1 t)q 0 + tq 1 a použít formuli (2). Ale to je vlastně rotace pomocí jednotkového kvaternionu (1 t)q 0 + tq 1 (1 t)q 0 + tq 1, což taková krása není. Lepší je SLERP (spherical linar interpolation) q t = sin(1 t)θ sin tθ q 0 + sin θ sin θ q 1, (3) kde θ je úhel mezi q 0 a q 1 (bráno v R 4 ). Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 15 / 16
SLERP Věta: Formule (3) je rovnoměrná parametrizace kruhového oblouku mezi q 0 a q 1. SLERP a LERP probíhá stejné polohy, výhoda je SLERP je v rovnoměrnosti. Vždy je třeba případně vzít q 1 místo q 1 tak, aby θ π/2. Jinak by došlo k tomu, že se objekt do té samé polohy bude přesouvat doplňkovým (mnohem delším) způsobem. Pokud se kromě rotace objekt i posouvá, interpolujeme posunutí lineárně v R 3. Pokud máme posloupnost více poloh, interpolujeme každé dvě pozice (lomená sférická čára), nebo globálně pomocí sférického spline. Každá animace rotací je vlastně křivkou v jednotkových kvaternionech, tedy sférickou křivkou na S 3. Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 16 / 16