ndice
1. 2. Sistemas de Coordenadas Transformaciones Bsicas
1. 2. 3. 4. 5. Traslacin Escalado Rotacin Plana Afilamiento Deformaciones
3. 4. 5.
Introduccin
Nos movemos en un mundo 3D Se debe permitir trabajar directamente con objetos 3D
y x
Sin embargo al final siempre habr que generar una image 2D en pantalla
Las transformaciones son las mismas que antes, aadiendo una tercera componente
traslaciones rotaciones escalados
Sistemas de Coordenadas
Una escena 3D se define por los puntos, lneas y planos que la componen Necesitamos un sistema para poder referenciar las coordenadas, al igual que ocurra en 2 dimensiones Hace falta un tercer eje, Z, perpendicular al X y al Y Cualquier punto se describe entonces como una terna de valores (x, y, z) Para el sentido del eje Z se usa la regla de la mano derecha
(2,0,0) (2,0,0) (2,0,0) (2,0,0)
(2,0,0) (2,0,0)
(2,0,0)
(2,0,0)
Transformaciones 3-D
Son extensiones de las transformaciones en dos dimensiones En el caso 2D tenamos inicialmente matrices 2x2, pero eso slo nos permita operaciones del tipo
a1 ( x ' , y ' ) = ( x, y ) b 1
a2 b2
x' = ax + by
a2 b2 c2
a3 b3 c3
x' = ax + by + c
Por tanto, en 3-D, aplicando la misma regla, habr que pasar a matrices 4x4
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
x' = ax + by + cz + d
Traslacin
Reposiciona un objeto desplazndolo a las nuevas coordenadas Z P = (x, y, z) P = (x, y, z)
Y X
P = ( x, y , z )
P' = ( x' , y ' , z ' )
1 0 T = 0 t x
0 1 0 ty
0 0 1 tz
0 0 0 1
P' = P T
T ( t x , t y , t z )
P = (x, y, z) P = (x, y, z) Y
P = ( x, y , z )
P' = ( x' , y ' , z ' )
sx 0 S = 0 0
0 sy 0 0
0 0 sz 0
0 0 0 1
P' = P S
1 1 1 S , , s s s x y z
P = (x, y, z)
cos sin RZ = 0 0
sin cos 0 0
0 0 0 0 1 0 0 1
P = (x, y, z)
P ' = P RZ
Z
P = (x, y, z) Z P = (x, y, z)
En forma matricial:
Y X
0 1 0 cos RX = 0 sin 0 0
0 sin cos 0
0 0 0 1
P' = P RX
P = (x, y, z) X P = (x, y, z)
En forma matricial:
Z Y
cos 0 RY = sin 0
0 sin 1 0 0 cos 0 0
0 0 0 1
P ' = P RY
Afilamiento (shearing)
Consiste en llevar todos los puntos de una recta que pasa por el origen sobre uno de los ejes principales Z y = bz
y ' = y bz z' = z
Z Del mismo modo se transforma la lnea x = az en el eje z X x = az
x' = x az z' = z
Afilamiento 3-D
Combinando ambos afilamientos 2D obtenemos el 3D se toma una lnea arbitraria que pasa por el origen, y se mueve al eje z, dejando los valores de z fijos Z
y = bz
x = az
Ejemplo
a) Afilar la recta que pasa por los puntos (0,0,0) y (8,10,6) b) Obtener las nuevas coordenadas del punto P = (4,5,3)
x = 8t y = 10t z = 6t
x = 4z / 3 y = 5z / 3
Y la matriz:
0 1 1 0 A= 4/3 5/3 0 0
0 0 0 0 1 0 0 1
P ' = P A = (0,0,3)
Deformaciones
Son transformaciones no lineales, donde la magnitud de la transformacin depende de cada punto Hasta ahora, las transformaciones han sido del tipo: Donde:
P' = P M
a1 b M = 1 c 1 d 1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
x' = FX ( x, y, z ) = a1 x + b1 y + c1 z + d1 y ' = FY ( x, y, z ) = a2 x + b2 y + c2 z + d 2 z ' = F ( x, y , z ) = a x + b y + c z + d Z 3 3 3 3
DEFORMACIN
Tapering
Consiste en escalar dos de las tres coordenadas del punto, utilizando un factor de escala que depende de la tercera coordenada
donde
sx = f ( z) s y = f ( z )
Ejemplo: f(z) = 2z
Z Y Y
Tapering
La funcin f(z) puede ser lineal (sencilla), o puede ser todo lo complicado que se quiera
NOTAS: La mayora de las veces es obligatorio mallar el objeto El mallado puede ser selectivo: mallar con ms detalle donde haya ms curvatura Hay que tener en cuenta que para el ordenador, el objeto no es ms que un conjunto de vrtices y aristas discreto
Twisting
Consiste en escalar dos de las tres coordenadas del punto, utilizando un factor de escala que depende de la tercera coordenada
donde
= f (z )
Si el eje de deformacin no coincide con eje z (sino que est desplazado) habr que trasladar primero y deshacer la traslacin despus
t0
traslacin
y
escalado
t1
t2
100%
100% 80%
50%
0%
0%
t0
t1
t0
t1
Deformaciones de caja
Un tipo distinto de deformaciones son las deformaciones de caja
Se coloca una caja mallada alrededor del objeto, y se deforman los vrtices
El sistema calcula la expresin de la deformacin resultante, y le aplica la misma transformacin al objeto interior
Se usa mucho en software de modelado, para modelar objetos imperfectos a partir de una forma bsica ideal
Ejemplo de twist
continuacin
Como el eje del twist no coincide con el eje z, habr que llevarlo primero hasta l, hacer el twist, y devolver el prisma a su sitio
Ahora calculemos el ngulo del twist Cmo no nos dicen como es la deformacin en los puntos intermedios, asumimos una interpolacin lineal
En z=0, rotamos 0 grados En z=2, rotamos 36 grados En z=4, rotamos 72 grados
10
continuacin
La matriz del twist ser:
c s 0 0 s c 0 0 Twist z = 10 0 0 1 0 0 0 0 1
donde
Composicin de Transformaciones
El escalado, la traslacin y la rotacin son transformaciones lineales, ya que los nuevos puntos se calculan a partir de combinaciones lineales de las componentes de los puntos originales (las deformaciones no lo son!) Se define TRANSFORMACIN AFN a una combinacin de transformaciones lineales aplicadas a un objeto Cada transformacin vendr representada por una sola matriz, que se obtendr multiplicando las matrices de cada una de las transformaciones, y en el mismo orden en el que queremos que se apliquen Este hecho es el que impuls la creacin de las tarjetas grficas (aceleradoras)
Las transformaciones afines preservan el paralelismo de las lneas, pero no sus ngulos y longitudes
Rotacin de 45
Escalado en x
Transformacin de planos
Hasta ahora hemos visto que las transformaciones se aplican solamente a los puntos Para transformar lneas transformaremos slo sus dos extremos, y pintaremos la lnea en el nuevo sitio Para trasnformar polgonos transformaremos slo sus vrtices
Para transformar un plano del que slo conocemos su ecuacin, habr que transformar los coeficientes de la ecuacin! Sea el plano Ax + By + Cz + D = 0 Llamemos N al vector N = [ A, B, C, D], donde se cumple que (A, B, C) es el vector normal al plano (ocurre lo mismo con una recta) La ecuacin del plano en forma matricial puede ponerse como donde P = [x, y, z, 1]
N PT = 0
Transformacin de planos
Sea M la transformacin afn aplicada al plano Para transformar puntos sueltos del plano haramos P = P M Pero para obtener la ecuacin completa del plano transformado necesitamos hacer N = N Q, donde Q es una matriz que tenemos que calcular Se ve claro que M no es igual a Q escalando
Q = MT
( )
Q = M 1
Ejemplo
cos sin M = RZ ( ) = 0 0
0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1
3 x
2 y
Q= M
1 T
cos sin = 0 0
P' = 2 x + 3 y + 6 = 0
P2
continuacin
1) Trasladamos P1 al origen P3 P2 P1 X P1 Z Z
Y P3 P2 X
1 0 T ( x1 , y1 , z1 ) = 0 x 1
0 1 0 y1
0 0 1 z1
0 0 0 1
P ' = (0,0,0,1) 1 P2 ' = ( x'2 , y '2 , z '2 ,1) P ' = ( x' , y ' , z ' ,1) 3 3 3 3
continuacin
2) Rotamos sobre el eje Y, hasta llevar el segmento P1P2 sobre el plano YZ
P1 Z
P2
P2 X Z P1 X
d1
d1 =
(x'2 )2 + (z '2 )2
0 x'2 / d1 0 1 0 0 0 z '2 / d1 0 0 0 1
z '2 / d1 0 RY ( ) = x'2 / d1 0
P ' ' = (0,0,0,1) 1 P2 ' ' = (0, y '2 , d1 ,1) P ' ' = ( x ' ' , y ' ' , z ' ' ,1) 3 3 3 3
continuacin
3) Rotamos sobre el eje X, hasta llevar el segmento P1P2 sobre el eje Z
P2
d2
P1
P1
d2 =
P2
P ' ' ' = (0,0,0,1) 1 P2 ' ' ' = (0,0, d 2 ,1) P ' ' ' = ( x ' ' ' , y ' ' ' , z ' ' ' ,1) 3 3 3 3
continuacin
4) Rotamos sobre el eje Z, hasta llevar el punto P3 al plano YZ Y P3 Y P3 d3 X P1 Z P1 Z X
d3 =
P2
P ' ' ' ' = (0,0,0,1) 1 P2 ' ' ' ' = (0,0, d 2 ,1) P ' ' ' ' = (0, d , z ' ' ' ' ,1) 3 3 3
M = T ( x1 , y1 , z1 ) RY ( ) RX ( ) RZ ( )
Ejemplo
continuacin
continuacin
continuacin
continuacin
continuacin
Rotacin General
Las rotaciones planas tenan como eje uno de los ejes principales Ahora usaremos como eje de rotacin una recta cualquiera, que ni siquiera debe pasar por el origen de coordenadas
La recta vendr dada por dos puntos, P1 y P2 La ecuacin paramtrica de la recta es:
P2
x = ( x2 x1 )t + x1 = at + x1 y = ( y2 y1 )t + y1 = bt + y1 z = ( z z )t + z = ct + z 2 1 1 1
P1
continuacin
1) Trasladamos P1 al origen
P2
Z P2 Y P1 X
P1
1 0 T ( x1 , y1 , z1 ) = 0 x 1
0 1 0 y1
0 0 1 z1
0 0 0 1
continuacin
2) Rotamos en X, hasta que la recta se coloque sobre el plano XZ
Z P2 Y P1 X
d1
(0,b,c)
d1 = b 2 + c 2
0 0 1 0 c / d1 b / d1 RX ( ) = 0 b / d1 c / d1 0 0 0
0 0 0 1
continuacin
3) Rotamos en Y, hasta que la recta se coloque sobre el eje Z
Z P2 P1 X Y X (a,0,d1)
d2
d1 = a 2 + d1
d1 / d 2 0 RY ( ) = a / d2 0
a / d2
1 0 0 d1 / d 2 0 0
0 0 0 1
continuacin
4) Rotamos en Z el ngulo que queramos rotar 5) Hacemos la rotacin inversa 6) Hacemos la rotacin inversa
RZ ( )
Z
RY ( )
RX ( ) T ( x1 , y1 , z1 )
Y X
Finalmente, la matriz de transformacin completa para una rotacin general ser el resultado de multiplicar las siete anteriores
M = T ( x1 , y1 , z1 ) RX ( ) RY ( ) RZ ( ) RY ( ) RX ( ) T ( x1 , y1 , z1 )
Ejemplo
continuacin
continuacin
continuacin
Ejemplo
Normalmente, los objetos vienen definidos en un sistema local Cuando se monta la escena, todos los puntos deben estar referidos a un nico sistema global
z y x
x z y
z x y
Caso 2D
Sea el punto P, de coordenadas (8,4) con respecto al sistema XY Qu coordenadas tendr P respecto al sistema UV? X Y V P=(8,4)
5 U
La operacin es equivalente a aplicarle a P la misma transformacin que tendramos que aplicarle al sistema nuevo (UV) para llevarlo al viejo (XY)
1 0 0 T (5,0) = 0 1 0 5 0 1
continuacin
Y si el sistema UV estuviese rotado con respecto al XY, Qu coordenadas tendr P respecto al sistema UV? Y V 60 P
X La solucin es la misma: utilizar la tranformacin que lleva el sistema nuevo (UV) al viejo (XY)
P' = P R( / 3) (0.54,8.93,1)
Caso general 2D
Dado un sistema UV localizado en el punto (a,b), y rotado un ngulo alfa con respecto al sistema XY, la matriz de cambio de sistema de referencia viene dada por: V Y P (a,b) X U
M = T ( a,b) R ( )
Siempre habr que trasladar en primer lugar, para no mover el sistema nuevo de sitio en la rotacin Pero existe un problema no siempre es tan fcil calcular el ngulo de rotacin entre ambos sistemas (en 2D puede pero en 3D es muy difcil!) Lo ms normal es que el sistema nuevo (UV) venga dado por la posicin de su origen, y por las componentes de sus direcciones, es decir, los vectores u,v Cmo podemos calcular la rotacin de forma ms sencilla?
V=<vx,vy> Y U=<ux,uy>
(a,b) X
continuacin
Supongamos que los dos sistemas tienen el mismo origen Los ejes del sistema nuevo son: Y V
cos R( ) = sin 0
sin cos 0
0 0 1
Pero si los vectores u,v estuvieran normalizados, la matriz podra ponerse como:
ux R( ) = u y 0
vx vy 0
0 0 1
Caso 3D
En 3D puede aplicarse la misma tcnica para obtener la matriz de rotacin! De no ser as, para llevar el sistema nuevo (UV) al viejo (XY) habra que hacer 3 rotaciones diferentes Dado un sistema UVW definido por los vectores unitarios Z W V Y X U
La matriz de rotacin necesaria para llevar el sistema nuevo al viejo se forma de la siguiente manera:
ux u R= y u z 0
vx vy vz 0
wx wy wz 0
0 0 0 1
Caso general 3D
Dado un sistema UVW localizado en el punto (a,b,c), definido por los vectores unitarios {u,v,w}, la matriz de cambio de sistema de referencia viene dada por: Z W V (a,b,c)
M = T ( a , b, c ) R
X
Y U
Siempre habr que trasladar en primer lugar, para no mover el sistema nuevo de sitio en la rotacin
0 0 1 1 0 0 M = 0 0 1 a b c
0 u x 0 u y 0 u z 1 0
vx vy vz 0
wx wy wz 0
0 0 0 1
continuacin
Si los vectores {u,v,w} no fueran unitarios, puede que eso signifique que el sistema nuevo est a una escala diferente Ejemplo: un sistema en metros y otro en centmetros Para llevar el nuevo al viejo habr que escalar por 100 V U X Y
Caso general: sean {LU, LV, LW} las longitudes de los vectores {u,v,w} Para obtener la matriz de cambio de sistema final habr que multiplicar por la matriz de escalado siguiente:
0 0 1 / Lu 1 / Lv 0 1 1 1 0 , , = S 0 1 / Lw Lu Lv Lw 0 0 0 0
0 0 0 1
1 1 1 M = T ( a , b, c ) R S , , L L L u v w
Ejemplo
continuacin
Ejemplo
continuacin
Ejemplo