510 likes | 930 Views
>> Transformación << Transformaciones 3D. LINK http:// www .sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones. 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
E N D
>> Transformación<<Transformaciones 3D LINK http://www.sc.ehu.es/ccwgamoa/docencia/Material/Presentaciones A. García-Alonso
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 A. García-Alonso
Traslación de un cuerpo Entry Level Graphics Course Curriculum Western Michigan University Jason_a.cavanaugh@wmich.edu http://grog.lab2.cc.wmich.edu/atkins/section52.htm A. García-Alonso
y P’ t P x z Traslación de un punto 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) : x’ = x + tx y’ = y + ty z’ = z + tz A. García-Alonso ver nota
Escalado • Escalado homogéneo en los tres ejes, con pívot (centro) de escalado en el origen A. García-Alonso 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 A. García-Alonso ver nota
... • Escalado no homogéneo: en cada eje se utiliza un coeficiente de escalado distinto. A. García-Alonso
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 A. García-Alonso
y y x x z z Oblicua (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 A. García-Alonso
Rotación sobre un eje coordenado Entry Level Graphics Course Curriculum Western Michigan University Jason_a.cavanaugh@wmich.edu http://grog.lab2.cc.wmich.edu/atkins/section52.htm A. García-Alonso
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 A. García-Alonso
... • Signo o sentido de la rotación A. García-Alonso
y y y P j : (0,1,0) U α β i Q x x x U’ z z z ... • 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’ A. García-Alonso
y P y P’ x P z θ θ x z Rotación Giro Coordenada polar • Distinguir • Rotación (no usa origen de referencia) • Coordenada polar (requiere referencia) Coordenada polar referida al eje z A. García-Alonso
y P’ P β x z Rotación de un punto sobre el eje y 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 A. García-Alonso
y x x´ cos β 0 sin β x y´ 0 1 0 y z´ -sin β 0 cos β z P’ P β α z x’ = z sin β + x cos β y’ = y z’ = z cos β – x sin β • 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 : A. García-Alonso
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 A. García-Alonso
x´ a11 a12 a13 a14 x y´ a21 a22 a23 a24 y z´ a31 a32 a33 a34 z 1 0 0 0 1 1 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) A. García-Alonso
x´ 1 0 0 tx x y´ 0 1 0 ty y z´ 0 0 1 tz z 1 0 0 0 1 1 Matriz de traslación • Expresaremos ahora la translación de un punto usando coordenadas homogéneas A. García-Alonso
x´ 1 0 0 0 x y´ 0 cos θ -sin θ 0 y z´ 0 sin θ cos θ 0 z 1 0 0 0 1 1 x´ cos θ 0 sin θ 0 x y´ 0 1 0 0 y z´ -sin θ 0 cos θ 0 z 1 0 0 0 1 1 x´ cos θ -sin θ 0 0 x y´ sin θ cos θ 0 0 y z´ 0 0 1 0 z 1 0 0 0 1 1 Matrices de rotación sobre ejes coord. Rotación en x Rotación en y Rotación en z A. García-Alonso
x´ sx 0 0 0 x y´ 0 sy 0 0 y z´ 0 0 sz 0 z 1 0 0 0 1 1 x´ 1 0 a 0 x y´ 0 1 b 0 y z´ 0 0 1 0 z 1 0 0 0 1 1 x´ 1 0 0 0 x y´ 0 1 0 0 y z´ 0 0 -1 0 z 1 0 0 0 1 1 ... Escalado Oblicua en xy (z invariante) Reflexión plano xy A. García-Alonso
1 0 0 -tx 0 1 0 -ty 0 0 1 -tz 0 0 0 1 1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1 sx 0 0 0 0 sy 0 0 0 0 sz 0 0 0 0 1 1/sx 0 0 0 0 1/sy 0 0 0 0 1/sz 0 0 0 0 1 MT–1 = MT = MS = MS–1 = Matrices inversas A. García-Alonso ver nota
1 0 0 0 0 cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 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 MRx–1 = MRy–1 = MRz–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 = ... A. García-Alonso
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 A. García-Alonso
No conmutativa La composición de transformaciones no es conmutativa A. García-Alonso
vf vmt y vm Af Am x z 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 A. García-Alonso
v (vx,vy,vz) θ y vxz φ vf y vm y vm (vx,vy,vz) vm´ (0,vy,vxz) x θm x vxz x z -φm z z vm´´ (0,0,|v|) ... • 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) vxz=sqrt(vx2+vz2) if(vxz /|v|< ε ) φ = 0 else φ = acos( vz/ vxz ) if( vx < 0 ) φ = - φ θ = sin( vy/|v| ) Siempre resulta: -π φ π -π/2 θ π/2 A. García-Alonso 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) A. García-Alonso
θ y R r Q O x z 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 A. García-Alonso
Traslac. QO Rotac. α en z Rotac. β en x y y y y y y y Rotac. θ en y R´´ R´´ R R r r R´´´ R’ R’ Q Q x x x x x x x Q’ Q’ Q’ Q’ Q’ z z z z z z z Rotac. -β en x Rotac. - α en z Traslac. -QO • Componiendo las siguientes transformaciones queda el problema resuelto A. García-Alonso
θ y R r Q O y x z R´ x Q´ z ... • 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 A. García-Alonso
rxy y α R´´ R´ x Q’ z ... • 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 A. García-Alonso
y β R´´´ R´´ x Q’ z ... • 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 A. García-Alonso
... • 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 A. García-Alonso
rxy y α R´´ R’ x Q’ z y α rxy j rxy z x α ... • 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 • Como cos (α) = cos (–α) , entonces • si rx < 0 entonces el ángulo debe ser (2π- α)α = - α α = acos (ry / (rx2 + ry2 )1/2) si rx < 0 α = - α A. García-Alonso ver nota
y β R´´´ y R´´ β r´´ j r´´ x Q’ z x z β ... • 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 β = - β A. García-Alonso
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 A. García-Alonso
R1 R2 R3 T3x1 01x3 1 I3x3 T3x1 01x3 1 |R1| 0 0 0|R2|0 03x1 0 0 |R3| 01x3 1 R1 R2 R3 03x1 |R1| |R2| |R3| 01x3 1 M = T = S = R = ... Se puede comprobar que si Entonces A. García-Alonso
I3x3 -T3x1 01x3 1 T-1= S-1 = ... 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 porser una matriz de columnas ortonormales 1/|R1| 0 0 0 1/|R2|0 03x1 0 0 1/|R3| 01x3 1 A. García-Alonso
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 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’ y’ z’ 1 } { x y z 1 } A. García-Alonso ver nota
r1xr1yr1z0 r2xr2yr2z0 r3xr3yr3z0 tx tytz 1 ... • 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] A. García-Alonso
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 A. García-Alonso
Álgebra : matriz cambio de base +++ A. García-Alonso
Transf. 3D vs. Cambio Sist. Ref. A. García-Alonso
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+v1v2) • |q|2 = s2 + v·v • q-1 = (1/|q|2) (s, -v) • Uso en rotaciones (Hearn 11.2, al final) A. García-Alonso
“Clase” trfm3D +++ A. García-Alonso
Gestión trfm. 3D en OpenGL +++ A. García-Alonso
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 A. García-Alonso