>> Transformación <<
Transformaciones 3D
LINK
http://www.sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones
Trfm.3D
A. García-Alonso
1
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
2
Traslación de un cuerpo
Entry Level Graphics Course Curriculum
Western Michigan University
[email protected]
http://grog.lab2.cc.wmich.edu/atkins/section52.htm
Trfm.3D
A. García-Alonso
3
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
y
P
• 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
t
P’
x
z
Traslación de un punto
Trfm.3D
A. García-Alonso
4
ver nota
Escalado
• Escalado homogéneo en los tres ejes, con pívot (centro)
de escalado en el origen
Trfm.3D
A. García-Alonso
5
ver nota
...
• 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
Trfm.3D
A. García-Alonso
6
ver nota
...
• Escalado no homogéneo: en cada eje se utiliza un
coeficiente de escalado distinto.
Trfm.3D
A. García-Alonso
7
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 · x
y’ = sy · y
z’ = sz · z
Trfm.3D
A. García-Alonso
8
Oblicua (shear)
y
x
x’ = shx · x
y’ = y
z’ = z
x’ = x
y’ = shy · y
z’ = z
x’ = x
y’ = y
z’ = shz · z
y
z
x
x’ = shx · x
y’ = y
z’ = shz · z
z
Trfm.3D
A. García-Alonso
9
Rotación sobre un eje coordenado
Entry Level Graphics Course Curriculum
Western Michigan University
[email protected]
http://grog.lab2.cc.wmich.edu/atkins/section52.htm
Trfm.3D
A. García-Alonso
10
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
11
...
• Signo o sentido de la rotación
Trfm.3D
A. García-Alonso
12
...
• 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)
y
P
j : (0,1,0)
Q
z
y
y
P’
α
β
x
U
U’
z
Trfm.3D
i
x
x
z
A. García-Alonso
13
Giro  Coordenada polar
• Distinguir
– Rotación (no usa origen de referencia)
– Coordenada polar (requiere referencia)
y
y
P’
P
P
θ
x
z
Rotación
Trfm.3D
x
z
θ
Coordenada polar referida al eje z
A. García-Alonso
14
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
y
P’
P
β
x
z
Rotación de un punto sobre el eje y
Trfm.3D
A. García-Alonso
15
y
x
x’ = z sin β + x cos β
y’ = y
z’ = z cos β – x sin β
P’
P
β
α
z
– 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’ = y
z’ = d cos (α + β ) = d (cos α cos β – sin α sin β ) = z cos β – x sin β
– Que se puede expresar matricialmente :
x´
y´
z´
Trfm.3D
cos β
0
-sin β
0 sin β
1
0
0 cos β
A. García-Alonso
x
y
z
16
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
17
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´
y´
z´
1
Trfm.3D
a11
a21
a31
0
a12
a22
a32
0
a13
a23
a33
0
A. García-Alonso
a14
a24
a34
1
x
y
z
1
18
Matriz de traslación
• Expresaremos ahora la translación de un punto usando
coordenadas homogéneas
x´
y´
z´
1
Trfm.3D
1
0
0
0
0
1
0
0
0
0
1
0
tx
ty
tz
1
A. García-Alonso
x
y
z
1
19
Matrices de rotación sobre ejes coord.
x´
y´
z´
1
1
0
0 0
0 cos θ -sin θ 0
0 sin θ cos θ 0
0
0
0 1
x´
y´
z´
1
cos θ
0
-sin θ
0
x´
y´
z´
1
cos θ -sin θ 0
sin θ cos θ 0
0
0
1
0
0
0
Trfm.3D
0 sin θ
1
0
0 cos θ
0
0
x
y
z
1
Rotación en x
0
0
0
1
x
y
z
1
Rotación en y
0
0
0
1
x
y
z
1
Rotación en z
A. García-Alonso
20
...
x´
y´
z´
1
sx
0
0
0
0
sy
0
0
0
0
sz
0
0
0
0
1
x
y
z
1
x´
y´
z´
1
1
0
0
0
0
1
0
0
a
b
1
0
0
0
0
1
x
y
z
1
x´
y´
z´
1
1
0
0
0
0
1
0
0
0
0
-1
0
0
0
0
1
x
y
z
1
Trfm.3D
A. García-Alonso
Escalado
Oblicua en xy (z invariante)
Reflexión plano xy
21
Matrices inversas
MT =
1
0
0
0
0
1
0
0
0
0
1
0
tx
ty
tz
1
MS =
sx
0
0
0
0
sy
0
0
0
0
sz
0
0
0
0
1
Trfm.3D
MT
=
–1
–1
MS =
A. García-Alonso
1
0
0
0
0
1
0
0
0
0
1
0
1/sx 0 0
0 1/sy 0
0
0 1/sz
0
0 0
-tx
-ty
-tz
1
0
0
0
1
22
ver nota
...
MRx =
1 0
0 0
0 cos θ -sin θ 0
0 sin θ cos θ 0
0 0
0 1
MRy =
cos θ
0
-sin θ
0
MRz =
cos θ -sin θ 0
sin θ cos θ 0
0
0 1
0
0 0
Trfm.3D
0 sin θ
1
0
0 cos θ
0
0
0
0
0
1
0
0
0
1
–1
MRx =
–1
MRy =
–1
MRz =
A. García-Alonso
1 0
0 0
0 cos θ sin θ 0
0 -sin θ cos θ 0
0 0
0 1
cos θ
0
sin θ
0
0
1
0
0
-sin θ
0
cos θ
0
0
0
0
1
cos θ sin θ 0 0
-sin θ cos θ 0 0
0
0 1 0
0
0 0 1
23
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
24
No conmutativa
La composición de transformaciones no es conmutativa
Trfm.3D
A. García-Alonso
25
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
y
vf
vmt
vm
Af
NOTA : se dibuja en negro la recta soporte:
•Continua por encima del plano xz
•Discontinua por debajo
Am
x
z
Trfm.3D
A. García-Alonso
26
...
• 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
– Y queda resuelto el problema aplicando rotY(φf)
vxz=sqrt(vx2+vz2)
if( vxz / | v | < ε )
φ=0
else
φ = acos( vz/ vxz )
if( vx < 0 ) φ = - φ
θ = sin( vy / | v | )
Siempre resulta:
-π  φ  π
-π/2  θ  π/2
Trfm.3D
y
y
vf
v (vx,vy,vz)
vm´ (0,vy,vxz)
vm (vx,vy,vz)
vm
θm
θ
φ vxz
x
x
-φm
x
vxz
z
z
A. García-Alonso
z
vm´´ (0,0,|v|)
27
ver nota
...
• 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
28
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
θ
y
(x’, y’, z’) tras rotarle un ángulo θ sobre dicho eje
r R
Q
O
x
z
• 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
Trfm.3D
A. García-Alonso
29
• Componiendo las siguientes transformaciones queda el
problema resuelto
y
y
r R Traslac. QO
Q
x
z
z
Rotac. α en z
z
Q’
x
z
Trfm.3D
Q’
x
Rotac. - α en z
x
z
y
R´´´
Rotac. θ en y
Q’
z
y
R´´
Q’
R´´ Rotac. β en x
R’
y
Rotac. -β en x
y
x
y
R’
Q’
A. García-Alonso
Traslac. -QO
x
z
r R
Q
x
30
...
• 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)
z
– R´ = M1 · R
el resultado verificará que :
OR´ = r´ = r
Trfm.3D
A. García-Alonso
θ
y
r R
Q
O
x
z
y
R´
Q´
x
31
...
– 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
y
α
Se cumple, por tanto, que O  π r´  π k  π
rxy es la proyección ortogonal de r sobre πxy
R´´
α es el ángulo formado por rxy y j
Tener en cuenta el sentido de giro positivo k
rxy
R´
– 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
Trfm.3D
A. García-Alonso
x
Q’
z
32
...
– 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
y
β
R´´´
R´´
Q’
x
z
Trfm.3D
A. García-Alonso
33
...
– 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
34
y
...
α
R´´
• 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 + ry2 )1/2
cos α = ry / (rx2 + ry2 )1/2
z
Como cos (α) = cos (–α) , entonces
rxy
R’
x
Q’
• si rx < 0 entonces el ángulo debe ser (2π- α)  α = - α
y
α = acos ( ry / (rx2 + ry2 )1/2 )
si rx < 0  α = - α
rxy
α
j
z
Trfm.3D
A. García-Alonso
rxy
x
α
35
ver nota
y
β
R´´´
R´´
...
• Cálculo del ángulo β
–
–
–
–
–
R´´, y por tanto r´´, ha quedado abatido sobre πyz
z
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
Q’
x
• si rz ´´ > 0 entonces el ángulo debe ser (2π- β)  β = - β
y
β = acos ( ry´´ / (ry´´2 + rz´´2 )1/2 )
si rz´´ > 0  β = - β
r´´
z
Trfm.3D
A. García-Alonso
β
j
x
β
r´´
36
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
37
...
Se puede comprobar que si
M=
01x3
Entonces
T=
Trfm.3D
R1 R2 R3 T3x1
I3x3
T3x1
01x3
1
R=
R1 R2 R3 03x1
|R1| |R2| |R3|
01x3
1
A. García-Alonso
S=
1
|R1| 0 0
0 |R2| 0 03x1
0 0 |R3|
01x3
1
38
...
Por tanto
M-1 = (T · R · S)-1 = S-1 · R-1 · T-1
Y las inversas de estas matrices se calculan fácilmente
T-1=
R-1 = RT
S-1 =
Trfm.3D
I3x3
-T3x1
01x3
1
por ser una matriz de columnas ortonormales
1/ |R1| 0
0 1/ |R2|
0
0
01x3
0
0
03x1
1/|R3|
1
A. García-Alonso
39
Transformaciones : vectores fila
• Hasta ahora se han utilizado vectores columna
x´
y´
z´
1
a11
a21
a31
0
a12
a22
a32
0
a13
a23
a33
0
a14
a24
a34
1
x
y
z
1
• Pero, existen otros modos de gestión, por ejemplo,
OpenGL utiliza una versión transpuesta (vectores fila):
{ x’ y’ z’ 1 }
Trfm.3D
{x
y
z
1}
A. García-Alonso
a11
a12
a13
a14
a21
a22
a23
a24
a31
a32
a33
a34
0
0
0
1
40
ver nota
...
• 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
r2x r2y
r3x r3y
tx ty
Trfm.3D
r1z
r2z
r3z
tz
0
0
0
1
A. García-Alonso
41
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
42
Álgebra : matriz cambio de base +++
Trfm.3D
A. García-Alonso
43
Transf. 3D vs. Cambio Sist. Ref.
Trfm.3D
A. García-Alonso
44
Quaternion
• Fundamentos matemáticos
–
–
–
–
–
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
Trfm.3D
(Hearn Anexo 6)
(Hearn 11.2, al final)
A. García-Alonso
45
“Clase” trfm3D +++
Trfm.3D
A. García-Alonso
46
Gestión trfm. 3D en OpenGL +++
Trfm.3D
A. García-Alonso
47
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
Trfm.3D
A. García-Alonso
48
Descargar

Document