mat-610
Animacin
2
Transformaciones compuestas
3
Representacin de una orientacin arbitraria
4
Matrices de rotacin
Matrices de transformacin de 4x4
a b c d a b c tx
e f g h e f g ty
i j k l i j k tz
m n o p 0 0 0 1
Matrices de rotacin:
1 0 0 0 cos() 0 sin() 0 cos() sin() 0 0
0 cos() sin() 0 0 1 0 0 sin() cos() 0 0
0 sin() cos() 0 sin() 0 cos() 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1
5
Matrices de rotacin
0 0 1 0 0 0 0 0 1
0 1 0 0 1 0 0 1 0
1 0 0 0 0 0 1 0 0
Z
7
ngulos fijos
Problema: dos de los ejes de rotacin pueden terminar uno sobre otro
cuando el objeto se puede mover libremente en el espacio.
8
Gimbal lock
Prdida de un grado de libertad que ocurre cuando los ejes de dos de
los tres gimbals llegan al mismo lugar y no pueden compensar las
rotaciones de uno de los ejes en 3-D.
9
Interpolacin con ngulos fijos
(0,90,0) to (90,0,90)
(0,0,0)
(0,90,0) (90,0,90)
10
ngulos de Euler: ejes locales
Teorema de Euler:
En un espacio 3D, cualquier sistema coordenado Cartesiano con un
origen comn est relacionado por una rotacin sobre un eje fijo.
Una rotacin arbitraria puede representarse por 3 parmetros.
Podemos usar cualquiera de las siguientes secuencias de 3 rotaciones:
Y
Z
Las rotaciones con ngulos de Euler estn en orden reverso que las
rotaciones sobre ejes fijos:
Rz (90)Ry (60)Rx (30) = Ex (30)Ey (60)Ez (90)
11
ngulos de Euler: ejes locales
De acuerdo con el teorema de Euler, cualquier rotacin puede
representarse usando tres ngulos.
Si las rotaciones se escriben en trminos de matrices de rotacin A,B y
C, entonces la rotacin general R se puede escribir cmo:
R = ABC
12
Gimbal lock (tambin)
Una rotacin de 90 grados causa la prdida de un grado de libertad
(DOF).
z z z
3
/2
1 1
y y y
1 1
x x x
x x
13
ngulos de Euler
Mismos problemas que la representacin con ngulos fijos.
14
ngulos de Euler
15
Axis-angle
16
Axis-angle
Representacin de una orientacin con un vector y un escalar.
el vector es el eje sobre el cul se har la rotacin.
el escalar es el ngulo que se va a rotar.
OpenGL.
17
Axis-angle
Cualquier orientacin se puede representar con estos 4 parmetros.
Se puede interpolar el ngulo y el eje de forma independiente.
No tiene problemas del gimbal lock.
No puede componer rotaciones de manera eficiente: hay que convertir a
matrices de rotacin.
1. Interpolar los ejes de A1 a A2. Rotar el
1 eje alrededor de A1 x A2 para obtener A
1
Y 2. Interpolar el ngulo de 1 a 2 para
2 obtener
A1 x A2
2
3. Rotar el objeto alrededor de A.
Z
X
18
Cuaterniones
4 parmetros de nmeros reales [w,x,y,z] o, de manera equivalente [w,v]
que consiste en un escalar w, y un vector 3-dimensional v.
Representacin alternativa del axis-angle que contiene la misma
informacin en forma distinta.
Puede interpolarse y concatenarse en la misma representacin.
escalar
vector
19
Cuaterniones
Extiende el concepto de rotacin en 3D a 4D.
Evita el problema del gimbal lock y permite la implementacin de
rotaciones suaves y continuas.
Se considera como la adicin de un ngulo de rotacin a las coordenadas
esfricas: longitud, latitud y ngulos de rotacin.
Un cuaternin se define usando cuatro valores de punto flotante
[x,y,z,w]. stos se calculan de la combinacin de tres coordenadas del eje
de rotacin y el ngulo de rotacin.
Los cuaterniones son una extensin de los nmeros reales, similar a la de
los nmeros complejos. Mientras que los nmeros complejos son una
extensin de los reales por la adicin de la unidad imaginaria i, tal que i2
= 1, los cuaterniones son una extensin generada de manera anloga
aadiendo las unidades imaginarias: i, j y k a los nmeros reales y tal que
i2 = j2 = k2 = ijk = 1.
20
Cuaterniones
Representacin vectorial:
Se pueden expresar como el conjunto .H = {a + bi + cj + dk : a, b, c, d R}
Entonces un cuaternin es un nmero de la forma a + bi + cj + dk,
donde a, b, c, y d son nmeros reales unvocamente determinados por
cada cuaternin.
Representacin matricial:
21
Operaciones bsicas con cuaterniones
Suma:
[s1 , v1 ] + [s2 , v2 ] = [s1 + s2 , v1 + v2 ]
Multiplicacin:
no conmutativa: q1 q2 = q2 q1
22
Operaciones bsicas con cuaterniones
La identidad multiplicativa es el cuaternin: [1, (0, 0, 0)]
Inversin:
2
1
[s, v]1
=q 1
= [s, v]
||q||
||q|| = s2 + x2 + y 2 + z 2
23
Rotacin de vectores usando cuaterniones
Para rotar un vector v, utilizando cuaterniones representamos el vector
como [0,v] y la rotacin con el cuaternin q, entonces:
v = Rot(v) = q v q
1
= ((qp) v (qp)1 )
= Rotqp (v)
24
Rotacin de vectores usando cuaterniones
El inverso de un cuaternin representa la rotacin alrededor de mismo
eje, con el mismo ngulo pero en direccin contraria:
Rot1 (Rot(v)) = q 1 (q v q 1 ) q = v
25