Title: >> Transformaci
1gtgt Transformación ltltTransformaciones 3D
LINK http//www.sc.ehu.es/ccwgamoa/docencia/Materi
al/Presentaciones
2Contenido
- Transformaciones (Foley 5, Hearn 11)
- Traslación de un cuerpo
- Escalado con pívot en el origen
- Oblicua (shear)
- Rotación de un cuerpo sobre un eje coordenado
- Transformaciones y topología
- Coordenadas homogéneas
- Matrices de transformación
- Composición de transformaciones. Ejemplos
- Álgebra matriz cambio de base, quaternion
- Gestión trfm. 3D en OpenGL
3Traslación de un cuerpo
Entry Level Graphics Course Curriculum Western
Michigan University Jason_a.cavanaugh_at_wmich.edu h
ttp//grog.lab2.cc.wmich.edu/atkins/section52.htm
4Descripción de la traslación
- La traslación se define mediante un vector t
- Todo punto P perteneciente al cuerpo trasladado
pasa a una posición P determinada por el vector
de traslación t - Sea un punto P de coordenadas (x, y, z) deseamos
calcular sus nuevas coordenadas (x, y, z) tras
sufrir una traslación t (tx, ty, tz)
x x tx y y ty z z tz
ver nota
5Escalado
- Escalado homogéneo en los tres ejes, con pívot
(centro) de escalado en el origen
ver nota
6...
- El escalado se puede realizar respecto de
cualquier pívot . En este caso se ha elegido el
centro del cubo que envuelve al sólido
ver nota
7...
- Escalado no homogéneo en cada eje se utiliza un
coeficiente de escalado distinto.
8Cálculo del escalado
- El escalado se define mediante factores de escala
- Escalado homogéneo un único factor s ? ?, s gt 0
- s gt 1 aumenta el tamaño
- s lt 1 disminuye
- Escalado heterogéneo factores de escalado en
cada eje coordenado sx, sy, sz - El escalado homogéneo es el más habitual
- Si consideramos como pívot el origen de
coordenadas - Sea un punto P de coordenadas (x, y, z), deseamos
calcular sus nuevas coordenadas (x, y, z)
x sx x y sy y z sz z
9Oblicua (shear)
x shx x y y z z
x x y shy y z z
x x y y z shz z
x shx x y y z shz z
10Rotación sobre un eje coordenado
Entry Level Graphics Course Curriculum Western
Michigan University Jason_a.cavanaugh_at_wmich.edu h
ttp//grog.lab2.cc.wmich.edu/atkins/section52.htm
11Descripción de la rotación
- La rotación puede ser sobre cualquier eje
- Una rotación se define mediante (O, r )
- Un punto del eje
- Un vector que determina la dirección y sentido
del eje - El sentido positivo de giro de un eje lo
determina la regla de la mano derecha o del
sacacorchos
http//www.cac.psu.edu/dept/cac/publications/web/
publications/cacguide/viz/sem_notes/3d_fundamental
s
12...
- Signo o sentido de la rotación
13...
- Todo punto P perteneciente al cuerpo girado pasa
a una posición P por rotación de un ángulo ß
sobre (Q, j) - La figura supone que ß es positivo
- De modo similar se presentan las rotaciones
positivas (O, i), (O, k)
P
14Giro ? Coordenada polar
- Distinguir
- Rotación (no usa origen de referencia)
- Coordenada polar (requiere referencia)
Coordenada polar referida al eje z
15Cálculo rotación de un punto (eje y)
- Sea un punto P de coordenadas (x, y, z) deseamos
calcular sus nuevas coordenadas (x, y, z) tras
girar un ángulo ß alrededor del eje y - P estará contenido en un plano perpendicular a j
que pasa por P - Resolveremos el problema en ese plano
16x z sin ß x cos ß y y z z cos ß x
sin ß
- Usando dos parámetros auxiliares a y d
(distancia de P al eje y), se puede expresar - x d sin a
- z d cos a
- Similarmente, y sustituyendo lo anterior, se
obtiene - x d sin (a ß ) d ( cos a sin ß sin a cos
ß ) z sin ß x cos ß - y y
- z d cos (a ß ) d (cos a cos ß sin a sin
ß ) z cos ß x sin ß - Que se puede expresar matricialmente
17Transformaciones y topología
- Se puede observar que las relaciones topológicas
entre vértices, aristas y caras no varían en
ninguna de las transformaciones estudiadas - Tampoco varían sus ángulos relativos, excepto en
el caso de escalado no homogéneo
18Coordenadas homogéneas
- Utilizaremos coordenadas homogéneas (Burgos
11.8) - Con una única estructura de datos se describen
todas las transformaciones matrices M44 - Permite componer una sucesión de transformaciones
en una única matriz - No toda M44 representa una transformación
geométrica válida - Lo habitual será considerar la unidad en la
cuarta coordenada (la homogénea)
19Matriz de traslación
- Expresaremos ahora la translación de un punto
usando coordenadas homogéneas
20Matrices de rotación sobre ejes coord.
Rotación en x
Rotación en y
Rotación en z
21...
Escalado
Oblicua en xy (z invariante)
Reflexión plano xy
22Matrices inversas
ver nota
23...
24Composición de transformaciones
- Apliquemos una transformación P MT1 P
- Apliquemos otra P MT2 P MT2 MT1
P ? - La matriz que acumula ambas transformaciones será
- M MT2 MT1
- En general M MTn ... MT3 MT2 MT1
25No conmutativa
- La composición de transformaciones no es
conmutativa
26Ejemplo transformar vector ligado
- Problema dados dos vectores ligados encontrar
la transformación que lleva a uno sobre el otro
- Sean dos vectores ligados especificados mediante
su punto origen y su vector. Los denominaremos
móvil (Am , vm ) y fijo (Af , vf ) - Se trata de determinar la matriz de
transformación que aplicada a Am obtiene Af y
aplicada al punto Amvm lo transforma situándolo
sobre el semieje positivo de vf
- NOTA se dibuja en negro la recta soporte
- Continua por encima del plano xz
- Discontinua por debajo
27...
- Resolvemos el problema con ambos vectores
aplicados en el origen - Usaremos coordenadas esféricas (mod, f, ?) nota
- Llevamos vm sobre el plano yz mediante
rotY(-fm) vm - Lo transformamos sobre z con rotX(?m) vm
- Deshacemos esa rotación con rotX(-?f)
- Y queda resuelto el problema aplicando rotY(ff)
vxzsqrt(vx2vz2) if( vxz / v lt e ) f
0 else f acos( vz/ vxz ) if( vx lt
0 ) f - f
? sin( vy / v )
Siempre resulta -p ? f ? p -p/2 ? ? ? p/2
ver nota
28...
- El problema completo queda resuelto componiendo
también las transformaciones de traslación - trans(-Am)
- rotY(-fm)
- rotX(?m)
- rotX(-?f)
- rotY(ff)
- trans(Af)
29Ejemplo giro sobre cualquier eje
- Problema giro sobre cualquier eje (Hearn
11.9) - Sea un eje definido por (Q, r )
- Dado P (x, y, z) deseamos conocer sus nuevas
coordenadas (x, y, z) tras rotarle un ángulo ?
sobre dicho eje - El problema se resuelve mediante composición de
transformaciones - Primero se enuncian las transformaciones
- Después se determina el cálculo de cada una de
ellas - Finalmente se explica como evaluar los ángulos
requeridos
30- Componiendo las siguientes transformaciones queda
el problema resuelto
31...
- Solución
- Sea R tal que R Q r
- Calcular la traslación que lleva Q al origen
- M1 MT(-qx, -qy, -qz)
- Se cumplirá que
- r M1 r
- el resultado verificará que
- r r
- Q M1 Q
- el resultado verificará que
- Q O (queda sobre el origen)
- R M1 R
- el resultado verificará que
- OR r r
32...
- Para calcular el ángulo a entre p y pyz tendremos
en cuenta - p es el plano que pasa por el eje z, y contiene a
r - pyz es el plano definido por los ejes y-z
- Se cumple, por tanto, que O ? p r ? p k ? p
- rxy es la proyección ortogonal de r sobre pxy
- a es el ángulo formado por rxy y j
- Tener en cuenta el sentido de giro positivo k
- Calcular M2 MRz (a)
- Aplicar M2 a R para obtener R
- R quedará sobre pyz
- es decir, se verificará que, Rx 0
- r quedará paralelo a ese plano,
- es decir, se verificará que, rx 0
33...
- Calcular el ángulo ß entre r y j
- Tener en cuenta el sentido de giro positivo i
- Calcular M3 MRx (ß)
- Si se aplicase M3 (ß) a R se obtendría R
- R quedaría situado sobre el eje y
34...
- Calcular la matriz de giro M4 MRy (?)
- Una vez calculado el giro ? alrededor del eje
transformado, habrá que invertir el proceso de
transformación y para ello se calculan las
matrices inversas - M5 MRx (-ß)
- M6 MRz (-a)
- M7 MT(qx, qy, qz)
- La matriz de transformación que resuelve el
problema planteado será la que combina todas esas
transformaciones - M(Q,r) (?) M7 M6 M5 M4 M3 M2 M1
- No se calcula la expresión algebraica de la
matriz M(Q,r) (?), sino que se crea el código que
realiza esos procedimientos
35...
- Cálculo del ángulo a
- Se proyecta r sobre pxy rxy (rx, ry, 0)
- cos a j rxy / rxy
- cos a ( (0, 1, 0) (rx, ry, 0) ) / (rx2 ry2
)1/2 - cos a ry / (rx2 ry2 )1/2
- Como cos (a) cos (a) , entonces
- si rx lt 0 entonces el ángulo debe ser (2p- a) ?
a - a
a acos ( ry / (rx2 ry2 )1/2 ) si rx lt 0 ? a
- a
ver nota
36...
- Cálculo del ángulo ß
- R, y por tanto r, ha quedado abatido sobre
pyz - cos ß j r / r
- cos ß ( (0, 1, 0) (0, ry, rz) ) / (ry2
rz2 )1/2 - cos ß ry / (ry2 rz2 )1/2
- Como cos ß cos ß , entonces
- si rz gt 0 entonces el ángulo debe ser (2p- ß)
? ß - ß
ß acos ( ry / (ry2 rz2 )1/2 ) si rz gt
0 ? ß - ß
37Matriz inversa
- Dada una matriz de transformación 3D cualquiera,
su inversa se puede calcular por lo métodos
habituales del Álgebra de matrices - La matriz inversa se puede calcular de modo
directo si la transformación se ha construido
componiendo - Traslaciones
- Rotaciones sobre ejes
- Escalado (tanto homogéneo como heterogéneo)
- Dada una matriz de ese tipo se puede descomponer
en un producto de tres matrices (4x4) - M T R S
38...
- Se puede comprobar que si
- Entonces
39...
- Por tanto
- M-1 (T R S)-1 S-1 R-1 T-1
- Y las inversas de estas matrices se calculan
fácilmente
R-1 RT por ser una matriz de columnas
ortonormales
1/ R1 0 0 0 1/ R2 0 03x1 0 0 1/R3 01x
3 1
40Transformaciones vectores fila
- Hasta ahora se han utilizado vectores columna
- Pero, existen otros modos de gestión, por
ejemplo, OpenGL utiliza una versión transpuesta
(vectores fila)
x y z 1
x y z 1
ver nota
41...
- Todo lo visto es válido, si se tiene en cuenta
que hay que transponer la matrices de
transformación - El modo de componer transformaciones, sigue el
orden opuesto al visto, quedando - M MT1 MT2 MT3 ... MTn
- OpenGL almacena estas matrices en un vector del
siguiente modo - r1x r1y r1z 0 r2x r2y r2z 0 r3x r3y r3z 0 tx ty
tz 1
42Otros ejercicios de composición
- Cambio de sistema de referencia
- Calcular la matriz de transformación que, con
pívot en P (Px, Py, Pz), realiza un escalado no
homogéneo de coeficientes (Sx, Sy, Sz) - Pegado de objetos usando caras, aristas y
vértices - Movimientos relativos
- Gestión de pilas y composición
- Transformación de vectores
- Transformación de planos
43Álgebra matriz cambio de base
44Transf. 3D vs. Cambio Sist. Ref.
45Quaternion
- Fundamentos matemáticos (Hearn Anexo 6)
- q s ia jb kc q (s, v)
- q1q2 (s1s2, v1v2)
- q1q2 (s1s2 - v1 v2 , s1 v2 s2v1 s1v1 ?
v2) - q2 s2 v v
- q-1 (1/q2) (s, -v)
- Uso en rotaciones (Hearn 11.2, al final)
46Clase trfm3D
47Gestión trfm. 3D en OpenGL
48Animación y transformación 3D
- Animación 3D
- Cadena abierta
- Cadena cerrada
- Trayectorias
- Movimiento con restricciones (automóvil, avión)
- Control
- Interactivo (grados de libertad)
- Procedural ley, comportamiento, agente, etc
- Definición posición
- Parámetros para posicionamiento relativo
- Matriz para cada sólido