trfm.3da. garcía-alonso1 >> transformación
TRANSCRIPT
Trfm.3D A. García-Alonso 1
>> Transformación <<Transformaciones 3D
LINK http://www.sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones
Trfm.3D A. García-Alonso 2
Contenido
• 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
Trfm.3D A. García-Alonso 3
Traslación de un cuerpo
Entry Level Graphics Course Curriculum
Western Michigan University
http://grog.lab2.cc.wmich.edu/atkins/section52.htm
Trfm.3D A. García-Alonso 4
Descripció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) :
tP
P’
Traslación de un punto
y
z
x
x’ = x + tx
y’ = y + ty
z’ = z + tz
ver nota
Trfm.3D A. García-Alonso 5
Escalado
• Escalado homogéneo en los tres ejes, con pívot (centro) de escalado en el origen
ver nota
Trfm.3D A. García-Alonso 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
Trfm.3D A. García-Alonso 7
...
• Escalado no homogéneo: en cada eje se utiliza un coeficiente de escalado distinto.
Trfm.3D A. García-Alonso 8
Cálculo del escalado
• El escalado se define mediante factores de escala– Escalado homogéneo : un único factor s , s > 0
• s > 1 aumenta el tamaño• s < 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 · xy’ = sy · yz’ = sz · z
Trfm.3D A. García-Alonso 9
Oblicua (shear)
x
y
z
x’ = shx · xy’ = yz’ = z
x’ = shx · xy’ = yz’ = shz · z
x’ = xy’ = shy · yz’ = z
x
y
z
x’ = xy’ = yz’ = shz · z
Trfm.3D A. García-Alonso 10
Rotación sobre un eje coordenado
Entry Level Graphics Course Curriculum
Western Michigan University
http://grog.lab2.cc.wmich.edu/atkins/section52.htm
Trfm.3D A. García-Alonso 11
Descripció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_fundamentals
Trfm.3D A. García-Alonso 12
...
• Signo o sentido de la rotación
Trfm.3D A. García-Alonso 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’
y
z
x
y
z
x
βj : (0,1,0)Q
P
αi
U’
U
y
z
x
Trfm.3D A. García-Alonso 14
Giro Coordenada polar
• Distinguir– Rotación (no usa origen de referencia)
– Coordenada polar (requiere referencia)
x
y
z
θP
P’
Rotación Coordenada polar referida al eje z
x
y
z θ
P
Trfm.3D A. García-Alonso 15
Cá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
x
y
z
βP
P’
Rotación de un punto sobre el eje y
Trfm.3D A. García-Alonso 16
– Usando dos parámetros auxiliares : α y d (distancia de P al eje y), se puede expresar :
x = d sin αz = d cos α
– Similarmente, y sustituyendo lo anterior, se obtiene:x’ = d sin (α + β ) = d ( cos α sin β + sin α cos β ) = z sin β + x cos βy’ = yz’ = d cos (α + β ) = d (cos α cos β – sin α sin β ) = z cos β – x sin β
– Que se puede expresar matricialmente :x´ cos β 0 sin β x
y´ 0 1 0 y
z´ -sin β 0 cos β z
βP
P’
α
y x
z
x’ = z sin β + x cos βy’ = yz’ = z cos β – x sin β
Trfm.3D A. García-Alonso 17
Transformaciones 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
Trfm.3D A. García-Alonso 18
Coordenadas 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)
x´ a11 a12 a13 a14 x
y´ a21 a22 a23 a24 y
z´ a31 a32 a33 a34 z
1 0 0 0 1 1
Trfm.3D A. García-Alonso 19
Matriz de traslación
• Expresaremos ahora la translación de un punto usando coordenadas homogéneas
x´ 1 0 0 tx x
y´ 0 1 0 ty y
z´ 0 0 1 tz z
1 0 0 0 1 1
Trfm.3D A. García-Alonso 20
Matrices de rotación sobre ejes coord.x´ 1 0 0 0 x
y´ 0 cos θ -sin θ 0 y
z´ 0 sin θ cos θ 0 z
1 0 0 0 1 1
Rotación en x
x´ cos θ 0 sin θ 0 x
y´ 0 1 0 0 y
z´ -sin θ 0 cos θ 0 z
1 0 0 0 1 1
Rotación en y
x´ cos θ -sin θ 0 0 x
y´ sin θ cos θ 0 0 y
z´ 0 0 1 0 z
1 0 0 0 1 1
Rotación en z
Trfm.3D A. García-Alonso 21
...x´ sx 0 0 0 x
y´ 0 sy 0 0 y
z´ 0 0 sz 0 z
1 0 0 0 1 1
Escalado
x´ 1 0 a 0 x
y´ 0 1 b 0 y
z´ 0 0 1 0 z
1 0 0 0 1 1
Oblicua en xy (z invariante)
x´ 1 0 0 0 x
y´ 0 1 0 0 y
z´ 0 0 -1 0 z
1 0 0 0 1 1
Reflexión plano xy
Trfm.3D A. García-Alonso 22
Matrices inversas
1 0 0 -tx
0 1 0 -ty
0 0 1 -tz
0 0 0 1
MT
–1 =
1 0 0 tx
0 1 0 ty
0 0 1 tz
0 0 0 1
MT =
sx 0 0 0
0 sy 0 0
0 0 sz 0
0 0 0 1
MS =
1/sx 0 0 0
0 1/sy 0 0
0 0 1/sz 0
0 0 0 1
MS
–1 =
ver nota
Trfm.3D A. García-Alonso 23
... 1 0 0 0
0 cos θ sin θ 0
0 -sin θ cos θ 0
0 0 0 1
MRx
–1 =
1 0 0 0
0 cos θ -sin θ 0
0 sin θ cos θ 0
0 0 0 1
MRx =
cos θ 0 sin θ 0
0 1 0 0
-sin θ 0 cos θ 0
0 0 0 1
MRy =
cos θ -sin θ 0 0
sin θ cos θ 0 0
0 0 1 0
0 0 0 1
MRz =
cos θ 0 -sin θ 0
0 1 0 0
sin θ 0 cos θ 0
0 0 0 1
MRy
–1 =
cos θ sin θ 0 0
-sin θ cos θ 0 0
0 0 1 0
0 0 0 1
MRz
–1 =
Trfm.3D A. García-Alonso 24
Composició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
Trfm.3D A. García-Alonso 25
No conmutativaLa composición de transformaciones no es conmutativa
Trfm.3D A. García-Alonso 26
Ejemplo : 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 Am+vm 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 x
y
z
vm
Am
vf
Af
vmt
Trfm.3D A. García-Alonso 27
...
• Resolvemos el problema con ambos vectores aplicados en el origen
– Usaremos coordenadas esféricas (mod, φ, θ) nota *
– Llevamos vm sobre el plano yz+ mediante rotY(-φm) : vm´
– Lo transformamos sobre z+ con rotX(θm) : vm´´
– Deshacemos esa rotación con rotX(-θf)
– Y queda resuelto el problema aplicando rotY(φf)
x
y
z
v (vx,vy,vz)
θ
φ vxz x
y
z
vf
vm
x
y
z
vxz
vm (vx,vy,vz)vm´ (0,vy,vxz)
vm´´ (0,0,|v|)
-φm
θm
Siempre resulta:-π φ π
-π/2 θ π/2
vxz=sqrt(vx2+vz
2)if( vxz / | v | < ε ) φ = 0else φ = acos( vz/ vxz ) if( vx < 0 ) φ = - φ
θ = sin( vy / | v | )
ver nota
Trfm.3D A. García-Alonso 28
...
• El problema completo queda resuelto componiendo también las transformaciones de traslación
– trans(-Am)
– rotY(-φm)
– rotX(θm)
– rotX(-θf)
– rotY(φf)
– trans(Af)
Trfm.3D A. García-Alonso 29
Ejemplo : 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
x
y
z
θ
Q
R
O
r
Trfm.3D A. García-Alonso 30
• Componiendo las siguientes transformaciones queda el problema resuelto
Rotac. -β en x
x
y
z
Q
Rr
x
y
z Q’
R’
x
y
z Q’
R´´ Rotac. - α en z Traslac. -QO
x
y
z
Q
Rr
x
y
z Q’
R’
x
y
z Q’
R´´
x
y
z Q’
R´´´Traslac. QO Rotac. α en z Rotac. β en x
Rotac. θ en y
Trfm.3D A. García-Alonso 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 · rel resultado verificará que :r´ = r
– Q´ = M1 · Qel resultado verificará que :Q´ = O (queda sobre el origen)
– R´ = M1 · Rel resultado verificará que :OR´ = r´ = r
x
y
z
θ
Q
R
O
r
x
y
zQ´
R´
Trfm.3D A. García-Alonso 32
– Para calcular el ángulo α entre π y πyz tendremos en cuenta :• π es el plano que pasa por el eje z, y contiene a r• πyz es el plano definido por los ejes y-z• Se cumple, por tanto, que O π r´ π k π • rxy es la proyección ortogonal de r sobre πxy
• α es el ángulo formado por rxy y j• Tener en cuenta el sentido de giro positivo k
– Calcular M2 = MRz (α)
– Aplicar M2 a R´ para obtener R´´ • R´´ quedará sobre πyz
es decir, se verificará que, Rx´´= 0• r´´ quedará paralelo a ese plano,
es decir, se verificará que, rx´´= 0
...
R´´
x
y rxy
z
Q’
R´
α
Trfm.3D A. García-Alonso 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
...
x
y
zQ’
R´´´ R´´
β
Trfm.3D A. García-Alonso 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 (-α)• 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
Trfm.3D A. García-Alonso 35
• Cálculo del ángulo α– Se proyecta r sobre πxy : rxy (rx, ry, 0)
– cos α = j · rxy / | rxy |
– cos α = ( (0, 1, 0) · (rx, ry, 0) ) / (rx2 + ry
2 )1/2
– cos α = ry / (rx2 + ry
2 )1/2
– Como cos (α) = cos (–α) , entonces• si rx < 0 entonces el ángulo debe ser (2π- α) α = - α
...
α = acos ( ry / (rx2 + ry
2 )1/2 )si rx < 0 α = - α
α
y
z x
αrxyjrxy
R´´
x
y rxy
z
Q’
R’
α
ver nota
Trfm.3D A. García-Alonso 36
...
• Cálculo del ángulo β– R´´, y por tanto r´´, ha quedado abatido sobre πyz
– cos β = j · r´´ / | r´´|
– cos β = ( (0, 1, 0) · (0, ry´´, rz´´) ) / (ry´´2 + rz´´2 )1/2
– cos β = ry´´ / (ry´´2 + rz´´2 )1/2
– Como cos β = cos –β , entonces• si rz ´´ > 0 entonces el ángulo debe ser (2π- β) β = - β
β = acos ( ry´´ / (ry´´2 + rz´´2 )1/2 )
si rz´´ > 0 β = - β
x
y
zQ’
R´´´ R´´
β
β
βr´´jr´´
z x
y
Trfm.3D A. García-Alonso 37
Matriz 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
Trfm.3D A. García-Alonso 38
...
Se puede comprobar que si
Entonces
R1 R2 R3
T3x1
01x3 1
M =
I3x3
T3x1
01x3 1
T =
|R1| 0 0
0 |R2| 0 03x1
0 0 |R3|
01x3 1
S =R1 R2 R3 03x1
|R1| |R2| |R3|
01x3 1
R =
Trfm.3D A. García-Alonso 39
...
Por tantoM-1 = (T · R · S)-1 = S-1 · R-1 · T-1
Y las inversas de estas matrices se calculan fácilmente
I3x3 -T3x1
01x3 1
T-1=
1/ |R1| 0 0
0 1/ |R2| 0 03x1
0 0 1/|R3|
01x3 1
S-1 =
R-1 = RT por ser una matriz de columnas ortonormales
Trfm.3D A. García-Alonso 40
{ x y z 1 }
Transformaciones : 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´ a11 a12 a13 a14 x
y´ a21 a22 a23 a24 y
z´ a31 a32 a33 a34 z
1 0 0 0 1 1
a11 a21 a31 0
a12 a22 a32 0
a13 a23 a33 0
a14 a24 a34 1
{ x’ y’ z’ 1 }
ver nota
Trfm.3D A. García-Alonso 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]
...
r1x r1y r1z 0
r2x r2y r2z 0
r3x r3y r3z 0
tx ty tz 1
Trfm.3D A. García-Alonso 42
Otros 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
Trfm.3D A. García-Alonso 43
Álgebra : matriz cambio de base +++
Trfm.3D A. García-Alonso 44
Transf. 3D vs. Cambio Sist. Ref.
Trfm.3D A. García-Alonso 45
Quaternion
• Fundamentos matemáticos (Hearn Anexo 6)– q = s + ia + jb + kc ; q =(s, v)
– q1+q2 = (s1+s2, v1+v2)
– q1q2 = (s1s2 - v1 · v2 , s1 v2 +s2v1+ s1+v1 v2)
– |q|2 = s2 + v · v
– q-1 = (1/|q|2) (s, -v)
• Uso en rotaciones (Hearn 11.2, al final)
Trfm.3D A. García-Alonso 46
“Clase” trfm3D +++
Trfm.3D A. García-Alonso 47
Gestión trfm. 3D en OpenGL +++
Trfm.3D A. García-Alonso 48
Animació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