Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
1.
Sistemas de Coordenadas
2.
Transformaciones Bsicas
1.
Traslacin
2.
Escalado
3.
Rotacin Plana
4.
Afilamiento
5.
Deformaciones
3.
Composicin de Transformaciones
4.
Rotacin General
5.
Introduccin
y
x
Sin embargo al final siempre habr que generar una image 2D en pantalla
traslaciones
rotaciones
escalados
Sistemas de Coordenadas
(2,0,0)
(2,0,0)
(2,0,0)
(2,0,0)
(2,0,0)
(2,0,0)
Y
(2,0,0)
(2,0,0)
Transformaciones 3-D
En el caso 2D tenamos inicialmente matrices 2x2, pero eso slo nos permita
operaciones del tipo
a1
( x' , y ' ) = ( x, y )
b1
x' = ax + by
a1
a2
b2
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
a1
b
( x' , y ' , z ' ,1) = ( x, y, z ,1) 1
c
1
d
1
a2
b2
c2
d2
a3
b3
c3
d3
a4
b4
c4
d 4
x' = ax + by + cz + d
Traslacin
P = (x, y, z)
P = (x, y, z)
x' = x + t x
y' = y + t y
z' = z + t
z
Y
X
En forma matricial:
P = ( x, y , z )
P' = ( x' , y ' , z ' )
0
T =
0
t
x
0
1
0
0
0
ty
1
tz
0
0
T ( t x , t y , t z )
P' = P T
x' = s x x
y' = s y y
z' = s z
z
P = (x, y, z)
P = (x, y, z)
Y
X
En forma matricial:
P = ( x, y , z )
P' = ( x' , y ' , z ' )
sx
0
S =
0
0
sy
0
0
0
sz
0
0
P' = P S
1 1 1
S , ,
s s s
x y z
Y
X
z' = z
P = (x, y, z)
En forma matricial:
cos
sin
RZ =
0
sin
cos
0
0
0 0
0 0
1 0
0 1
P = (x, y, z)
P ' = P RZ
X
Z
Para calcular la expresin de rotacin alrededor del eje X, intercambiamos las variables
z' = z
x' = x
P = (x, y, z)
Z
P = (x, y, z)
Y
X
En forma matricial:
0
1
0 cos
RX =
0 sin
0
0
0
sin
cos
0
P' = P RX
0
0
Para calcular la expresin de rotacin alrededor del eje Y, intercambiamos las variables
y' = y
z' = z
P = (x, y, z)
X
P = (x, y, z)
Z
Y
En forma matricial:
cos
0
RY =
sin
0 sin
1
0
0 cos
0
P ' = P RY
0
0
Afilamiento (shearing)
y = bz
y ' = y bz
z' = z
Z
x = az
x' = x az
z' = z
Afilamiento 3-D
x' = x az
y ' = y bz
z' = z
0
1
1
0
A=
a b
0
0
0 0
0 0
1 0
0 1
y = bz
x = az
Ejemplo
a)
Y la matriz:
0
1
1
0
A=
4/3 5/3
0
0
0 0
0 0
1 0
0 1
x' = x 4 z / 3
y' = y 5z / 3
z' = z
x = 8t
y = 10t
z = 6t
P ' = P A = (0,0,3)
x = 4z / 3
y = 5z / 3
Deformaciones
Donde:
a1
b
M = 1
c
1
d
1
a2
a3
b2
c2
b3
c3
d2
d3
P' = P M
a4
b4
c4
d 4
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
Tapering
Consiste en escalar dos de las tres coordenadas del punto, utilizando un factor de
escala que depende de la tercera coordenada
x' = s x x
y' = s y y
z' = z
donde
sx = f ( z)
s y = f ( z )
Ejemplo: f(z) = 2z
Z
Y
Z
Y
Tapering
NOTAS:
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
z' = z
donde
= f (z )
NOTAS:
Si no se malla, el resultado no
sale poligonal
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
escalado
t1
t2
100%
100%
80%
50%
0%
0%
t0
t1
t0
t1
Deformaciones de caja
Ejemplo de twist
continuacin
10
continuacin
c s 0 0
s
c
0
0
Twist z =
10 0 0 1 0
0 0 0 1
donde
c = cos( z / 10)
s = sin( z / 10)
s
c
c
s
D( z ) = T ( 5,0,0 ) Twist z T (5,0,0) =
0
0
10
5c + 5 5s
sin( 2 / 5)
cos(2 / 5)
cos(2 / 5)
sin( 2 / 5)
A' = A D(4) = (5,3,4,1)
0
0
5 cos(2 / 5) + 5 5 sin(2 / 5)
0
0
1
0
0
0
1
0
0
0
0
0
0
Composicin de Transformaciones
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
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 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
N PT = 0
Transformacin de planos
Pero para obtener la ecuacin completa del plano transformado necesitamos hacer
N = N Q, donde Q es una matriz que tenemos que calcular
( )
Q = MT
Q = M 1
Ejemplo
cos
sin
M = RZ ( ) =
0
Q= M
1 T
cos
sin
=
0
sin
cos
0
0
sin
cos
0
0
0 0
0 0
1 0
0 1
0 0
0 0
1 0
0 1
2
y
3
x
P' = 2 x + 3 y + 6 = 0
Por ejemplo, si tu aplicacin tuviese una opcin de centrar el objeto en algn sitio
concreto.
Ejemplo:
P3
Y
P2
P1
P3
P1
X
Z
P2
continuacin
1) Trasladamos P1 al origen
P3
Y
P2
P3
P1
P2
P1
Z
0
T ( x1 , y1 , z1 ) =
0
x
1
1
0
y1
0
1
z1
0
0
P1 ' = (0,0,0,1)
continuacin
2) Rotamos sobre el eje Y, hasta llevar el segmento P1P2 sobre el plano YZ
P2
P1
Z
P2
X
P1
d1
Z
d1 =
z '2 / d1
RY ( ) =
x'2 / d1
(x'2 )2 + (z '2 )2
0 x'2 / d1 0
1
0
0
0 z '2 / d1 0
0
0
1
continuacin
3) Rotamos sobre el eje X, hasta llevar el segmento P1P2 sobre el eje Z
P2
d2
P1
P1
d2 =
0
1
0 z2 ' ' / d 2
RX ( ) =
0 y2 ' ' / d 2
0
0
0
y2 ' ' / d 2
z2 ' ' / d 2
0
0
0
P2
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
Y
P3
P3
d3
P1
P1
Z
d3 =
0 0
0 0
1 0
0 1
P2
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
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
P2
P1
continuacin
1) Trasladamos P1 al origen
P2
P1
P2
Y
Y
P1
X
0
T ( x1 , y1 , z1 ) =
0
x
1
1
0
y1
0
1
z1
0
0
P1 ' = (0,0,0,1)
continuacin
2) Rotamos en X, hasta que la recta se coloque sobre el plano XZ
Z
P2
(0,b,c)
d1
Y
P1
X
0
0
1
0 c / d1 b / d1
RX ( ) =
0 b / d1 c / d1
0
0
0
d1 = b 2 + c 2
0
0
P1 ' = (0,0,0,1)
continuacin
3) Rotamos en Y, hasta que la recta se coloque sobre el eje Z
P2
(a,0,d1)
P1
d1 / d 2
0
RY ( ) =
a / d2
d2
d1 = a 2 + d1
a / d2
1
0
0 d1 / d 2
0
0
0
P1 ' = (0,0,0,1)
continuacin
4) Rotamos en Z el ngulo que queramos rotar
5) Hacemos la rotacin inversa
RY ( )
RX ( )
RZ ( )
T ( x1 , y1 , z1 )
Y
X
M = T ( x1 , y1 , z1 ) RX ( ) RY ( ) RZ ( ) RY ( ) RX ( ) T ( x1 , y1 , z1 )
Ejemplo
continuacin
continuacin
continuacin
Ejemplo
Hasta ahora hemos visto cmo transformar un conjunto de puntos de un objeto en otro,
mientras el sistema permanece fijo
Cuando se monta la escena, todos los puntos deben estar referidos a un nico sistema
global
z
y
x
z
x
z
x
Caso 2D
P=(8,4)
5
X
1 0 0
T (5,0) = 0 1 0
5 0 1
continuacin
Y
V
60
cos( / 3) sin ( / 3) 0
R( / 3) = sin ( / 3) cos( / 3) 0
0
0
1
P' = P R( / 3) (0.54,8.93,1)
Caso general 2D
V
Y
P
(a,b)
M = T ( a,b) R ( )
Siempre habr que trasladar en primer lugar, para no mover el sistema nuevo de sitio en
la rotacin
V=<vx,vy>
Y
U=<ux,uy>
(a,b)
X
continuacin
u =< u x , u y >
v =< v x , v y >
cos
R( ) = sin
0
sin
cos
0
0
1
ux
R( ) = u y
0
vx
vy
0
0
1
Caso 3D
u =< u x , u y , u z >
v =< v , v , v >
x
y
z
w =< w , w , w >
x
y
z
V
Y
X
ux
u
R= y
u
z
0
vx
wx
vy
vz
wy
wz
0
0
Caso general 3D
W
V
(a,b,c)
M = T ( a , b, c ) R
Y
X
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
wx
vy
vz
wy
wz
0
0
continuacin
V
U
0
0
1 / Lu
1 / Lv
0
1 1 1 0
S , , =
0
1 / Lw
Lu Lv Lw 0
0
0
0
0
0
1 1 1
M = T ( a,b,c) R S , ,
Lu Lv Lw
Ejemplo
continuacin
Ejemplo
continuacin
Ejemplo