trfm.3da. garcía-alonso1 >> transformación

48
Trfm.3D A. García-Alonso 1 >> Transformación << Transformaciones 3D LINK http://www.sc.ehu.es/ccwgamoa/docencia/ Material/Presentaciones

Upload: sandalio-baeza

Post on 28-Jan-2016

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 1

>> Transformación <<Transformaciones 3D

LINK http://www.sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones

Page 2: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 3: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 3

Traslación de un cuerpo

Entry Level Graphics Course Curriculum

Western Michigan University

[email protected]

http://grog.lab2.cc.wmich.edu/atkins/section52.htm

Page 4: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 5: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 6: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 7: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 7

...

• Escalado no homogéneo: en cada eje se utiliza un coeficiente de escalado distinto.

Page 8: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 9: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 10: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 10

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

Page 11: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 12: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 12

...

• Signo o sentido de la rotación

Page 13: Trfm.3DA. García-Alonso1 >> Transformació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

Page 14: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 15: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 16: Trfm.3DA. García-Alonso1 >> Transformación

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 β

Page 17: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 18: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 19: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 20: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 21: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 22: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 23: Trfm.3DA. García-Alonso1 >> Transformación

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 =

Page 24: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 25: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 25

No conmutativaLa composición de transformaciones no es conmutativa

Page 26: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 27: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 28: Trfm.3DA. García-Alonso1 >> Transformación

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)

Page 29: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 30: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 31: Trfm.3DA. García-Alonso1 >> Transformación

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´

Page 32: Trfm.3DA. García-Alonso1 >> Transformación

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’

α

Page 33: Trfm.3DA. García-Alonso1 >> Transformación

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´´

β

Page 34: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 35: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 36: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 37: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 38: Trfm.3DA. García-Alonso1 >> Transformación

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 =

Page 39: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 40: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 41: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 42: Trfm.3DA. García-Alonso1 >> Transformación

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

Page 43: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 43

Álgebra : matriz cambio de base +++

Page 44: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 44

Transf. 3D vs. Cambio Sist. Ref.

Page 45: Trfm.3DA. García-Alonso1 >> Transformación

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)

Page 46: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 46

“Clase” trfm3D +++

Page 47: Trfm.3DA. García-Alonso1 >> Transformación

Trfm.3D A. García-Alonso 47

Gestión trfm. 3D en OpenGL +++

Page 48: Trfm.3DA. García-Alonso1 >> Transformación

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