Descargar la presentación
La descarga está en progreso. Por favor, espere
1
>> Transformación << Transformaciones 3D
LINK Trfm.3D A. García-Alonso
2
Contenido Transformaciones (Foley 5, Hearn 11) Coordenadas homogéneas
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 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) : En la figura aparece en la izquierda el objeto en la posición original. En la derecha aparece el objeto –en el mismo sistema de referencia-, pero en la nueva posición generada a través de la transformación de las coordenadas de sus vértices. x’ = x + tx y’ = y + ty z’ = z + tz t P P’ Traslación de un punto y z x Trfm.3D A. García-Alonso ver nota
5
Escalado Escalado homogéneo en los tres ejes, con pívot (centro) de escalado en el origen En la figura de la izquierda aparecen dos vistas distintas del mismo objeto en la situación original. En la derecha aparece el objeto –en el mismo sistema de referencia, y en las mismas vistas-, pero en la nueva posición generada a través de la transformación de las coordenadas de sus vértices. Trfm.3D A. García-Alonso 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 Obsérvese que la proyección isométrica del objeto transformado (superior derecha) es idéntica a la vista en la transparencia anterior, sin embargo en la vista inferior se observa cómo el pívot de esta transformación está en el centro del cubo envolvente del objeto.. Trfm.3D A. García-Alonso ver nota
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 · x y’ = sy · y z’ = sz · z Trfm.3D A. García-Alonso
9
Oblicua (shear) x’ = shx · x y’ = y z’ = z x’ = x y’ = shy · y z’ = z
z’ = shz · z x y z x’ = shx · x y’ = y z’ = shz · z Trfm.3D A. García-Alonso
10
Rotación sobre un eje coordenado
Entry Level Graphics Course Curriculum Western Michigan University 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 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) y z x β j : (0,1,0) Q P α i U’ U y z x y z x P’ 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 x y z θ P Coordenada polar referida al eje z 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
Similarmente, y sustituyendo lo anterior, se obtiene:
β P P’ α y x 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 : x´ cos β 0 sin β x y´ y z´ -sin β 0 cos β z 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 Trfm.3D A. García-Alonso
19
Matriz de traslación Expresaremos ahora la translación de un punto usando coordenadas homogéneas x´ tx x y´ ty y z´ tz z Trfm.3D A. García-Alonso
20
Matrices de rotación sobre ejes coord.
x´ x y´ 0 cos θ -sin θ 0 y z´ 0 sin θ cos θ 0 z Rotación en x x´ cos θ 0 sin θ 0 x y´ y z´ -sin θ 0 cos θ 0 z Rotación en y x´ cos θ -sin θ 0 0 x y´ sin θ cos θ 0 0 y z´ z Rotación en z Trfm.3D A. García-Alonso
21
Oblicua en xy (z invariante)
... x´ sx x y´ 0 sy 0 0 y z´ 0 0 sz 0 z Escalado x´ 1 0 a 0 x y´ 0 1 b 0 y z´ z Oblicua en xy (z invariante) x´ x y´ y z´ z Reflexión plano xy Trfm.3D A. García-Alonso
22
Matrices inversas 1 0 0 tx 1 0 0 -tx 0 1 0 ty 0 1 0 -ty 0 0 1 tz
MT = tx ty tz MT–1 = sx 0 0 0 0 sy 0 0 0 0 sz 0 MS = Modo de evaluar las transformaciones inversas : Usar los métodos matriciales habituales Razonamiento geométrico : a) La translación inversa a (tx, ty, tz) es (-tx, -ty, -tz) b) La rotación inversa a θ es -θ y como [cos -θ = cos θ ; sin -θ = -sin θ] ... c) El escalado inverso a s es 1/s 1/sx 0 0 0 0 1/sy 0 0 0 0 1/sz 0 MS–1 = Trfm.3D A. García-Alonso ver nota
23
... 1 0 0 0 0 cos θ -sin θ 0 0 sin θ cos θ 0 0 0 0 1 MRx = 1 0 0 0
0 cos θ -sin θ 0 0 sin θ cos θ 0 MRx = 0 cos θ sin θ 0 0 -sin θ cos θ 0 MRx–1 = cos θ 0 sin θ 0 -sin θ 0 cos θ 0 MRy = cos θ 0 -sin θ 0 sin θ 0 cos θ 0 MRy–1 = cos θ -sin θ 0 0 sin θ cos θ 0 0 MRz = cos θ sin θ 0 0 -sin θ cos θ 0 0 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 conmutativa La 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 x y z vm Am vf Af vmt NOTA : se dibuja en negro la recta soporte: Continua por encima del plano xz Discontinua por debajo 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) Nota * Cuando vxz se hace cero, es decir, cuando θ= ± π/2, entonces a φ se le puede asignar cualquier valor, pero si esa variable polar está cambiando en el tiempo, entonces conviene conservar el valor que tenía en el estado anterior : φnew = φold x y z vxz vm (vx,vy,vz) vm´ (0,vy,vxz) vm´´ (0,0,|v|) -φm θm vxz=sqrt(vx2+vz2) if( vxz / | v | < ε ) φ = 0 else φ = acos( vz/ vxz ) if( vx < 0 ) φ = - φ x y z vf vm x y z v (vx,vy,vz) θ φ vxz θ = sin( vy / | v | ) Siempre resulta: -π φ π -π/2 θ π/2 Trfm.3D A. García-Alonso ver nota
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
x y z Q R r Q’ R’ R´´ R´´´ Traslac. QO Rotac. α en z Rotac. β en x Rotac. θ en y Rotac. -β en x x y z Q R r Q’ R’ R´´ Rotac. - α en z Traslac. -QO 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 · r el resultado verificará que : r´ = r Q´ = M1 · Q Q´ = O (queda sobre el origen) R´ = M1 · R OR´ = r´ = r x y z θ Q R O r x y z Q´ 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 Calcular M3 = MRx (β)
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 z Q’ 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)
z Q’ 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 Como cos (α) = cos (–α) , entonces si rx < 0 entonces el ángulo debe ser (2π- α) α = - α Nota : Si r es casi paralelo al eje “z”, el denominador (rx2 + ry2 )1/2 se hace casi 0, por tanto si rz> (1- ξ), entonces hay que resolver el problema de otro modo, que es mucho más simple, pues se puede girar directamente el ángulo θ alrededor del eje “z”. α y z x rxy j α = acos ( ry / (rx2 + ry2 )1/2 ) si rx < 0 α = - α Trfm.3D A. García-Alonso ver nota
36
x y z Q’ R´´´ R´´ β ... 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π- β) β = - β β r´´ j z x y β = acos ( ry´´ / (ry´´2 + rz´´2 )1/2 ) si rz´´ > 0 β = - β 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 R2 R3 03x1 |R1| |R2| |R3| 01x3 1 R = |R1| 0 0 0 |R2| x1 0 0 |R3| 01x3 1 S = Trfm.3D A. García-Alonso
39
... Por tanto Y las inversas de estas matrices se calculan fácilmente
M-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= R-1 = RT por ser una matriz de columnas ortonormales 1/ |R1| 0 0 0 1/ |R2| x1 0 0 1/|R3| 01x3 1 S-1 = Trfm.3D A. García-Alonso
40
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 // The meaning of the parameters that define the transformation are : // // | r1x r1y r1z 0 | // {x' y' z' 1} = {x y z 1} | r2x r2y r2z 0 | // | r3x r3y r3z 0 | // | tx ty tz 1 | // OpenGL stores transformations in one array : // [r1x r1y r1z 0 r2x r2y r2z 0 r3x r3y r3z 0 tx ty tz 1] // Transformations are composed in the following way : // P1 = P0 * m = P0 * M1 // P2 = P1 * m2 = P0 * m1 * m = P0 * M2 // P3 = P2 * m3 = P0 * m1 * m2 * m = P0 * M3 // In user interfaces, angles are usually in degrees // Within program structures, angles are usually stored in radians // Conversions can be done using the following parameters (see gc.h) : // angle * ANGLE_TO_RAD transforms from degrees into radians // angle * RAD_TO_ANGLE transforms from radians into degrees a11 a21 a31 0 a12 a22 a32 0 a13 a23 a33 0 a14 a24 a34 1 { x’ y’ z’ 1 } { x y z 1 } Trfm.3D A. García-Alonso ver nota
41
[ r1x r1y r1z 0 r2x r2y r2z 0 r3x r3y r3z 0 tx ty tz 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] 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 +++
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 Trfm.3D A. García-Alonso
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.