1. Transformaciones del modelo
Aquí se transforman los vértices en el sistema (Xm,Ym,Zm) (sistema de coordenadas del modelo) al
sistema (Xw,Yw,Zw) (sistema de coordenadas del mundo o escena)
Transformaciones 2D
Traslación Rotación Escala
Transformaciones 3D
Traslación Rotación X Rotación Y Rotación Z Escala
Rotación sobre un eje arbitrario
Si el eje es un vector V definido por los dos puntos P1(x1,y1,z1) y P2(x2,y2,z2), entonces la rotación se
calcula multiplicando las siguientes matrices:
donde:
2 1x - x
a =
V ,
2 1y - y
b =
V ,
2 1z -z
c =
V , 2 2
b + cd =
2 2 2
2 1 2 1 2 1V = (x - x ) + (y - y ) + (z - z )
Transformacion de la cámara
Aquí se transforman los vértices en el sistema (Xw,Yw,Zw) (sistema de coordenadas del mundo o
escena) al sistema (Xv,Yv,Zv) (sistema de coordenadas de la cámara o vista)
x
y
1 0 t
0 1 t
0 0 1
cosθ -senθ 0
senθ cosθ 0
0 0 1
x
y
s 0 0
0 s 0
0 0 1
x
y
z
1 0 0 t
0 1 0 t
0 0 1 t
0 0 0 1
1 0 0 0
0 cosθ -senθ 0
0 senθ cosθ 0
0 0 0 1
cosθ 0 senθ 0
0 1 0 0
-senθ 0 cosθ 0
0 0 0 1
cosθ -senθ 0 0
senθ cosθ 0 0
0 0 1 0
0 0 0 1
cosθ 0 senθ 0
0 1 0 0
-senθ 0 cosθ 0
0 0 0 1
x
y
z
s 0 0 0
0 s 0 0
0 0 s 0
0 0 0 1
1
1
1
1 0 0 x 1 0 0 0 d 0 a 0 cosθ -senθ 0 0 d 0 -a 0 1 0 0 0
0 1 0 y 0 c/d b/d 0 0 1 0 0 senθ cosθ 0 0 0 1 0 0 0 c/d -b/d 0
0 0 1 z 0 -b/d c/d 0 -a 0 d 0 0 0 1 0 a 0 d 0 0 b/d c/d 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
1
1
1
1 0 0 -x
0 1 0 -y
0 0 1 -z
0 0 0 1
T-1
Rα
-1
Rβ
-1
Rθ Rβ Rα T
2. Si se coloca la cámara en el punto Co(x0,y0,z0) y mirando hacia el punto C1(x1,y1,z1) en la escena,
entonces la transformación de las coordenadas de la escena a las de la cámara estarán dadas por las
siguientes matrices:
0
0
0
x y z
x y z
x y z
u u u 0 1 0 0 -x
v v v 0 0 1 0 -y
n n n 0 0 0 1 -z
0 0 0 1 0 0 0 1
donde: upV = (0,1,0)
n es el vector unitario con los
componentes nx,ny,nz
u es el vector unitario con los componentes
ux,uy,uz
v es el vector unitario con los componentes vx,vy,vz
Transformación de
Proyección
Aquí se transforman los vértices en el sistema (Xv,Yv,Zv) (sistema de coordenadas de la cámara o
vista) al sistema (Xp,Yp,Zp) (sistema de coordenadas de la proyección)
R T
0 1 0 1 0 1
2 2 2
0 1 0 1 0 1
, ,z )
N = (x - x ) + (y - y ) + (z - z )
N = (x - x y - y - z
N
n =
N
V = N× U
V
v =
V
U = Vup× N
U
u =
U
(producto cruz)
(producto cruz)
1y 2 z 1z 2 y 1z 2 x 1x 2 z 1x 2 y 1y 2 xV1×V2 = (V V V V ,V V V V ,V V V V )- - -
(fórmula general
para calcular el
producto cruz)
3. Ortográfica (paralela)
Perspectiva
donde d es la distancia (siempre positiva) que hay del origen al punto de convergencia. Se asume al
utilizar esta matriz que el plano de proyección es siempre el plano X-Y del sistema de coordenadas y
que el punto de convergencia siempre está sobre el eje Z negativo.
Al aplicar esta matríz a los vértices, nos dan vectores columna donde el cuarto renglón puede no tener
el valor de 1, si ese es el caso, hay que dividir todos los renglones de esa columna entre el valor del
cuarto renglon para poder interpretarlo como un vértice. Esto se representa como sigue (suponiendo
que el cuarto renglón nos diera el valor h):
Transformación de Normalización
Aquí se transforman los vértices en el sistema (Xp,Yp,Zp) (sistema de coordenadas de la proyección)
al sistema (Xn,Yn,Zn) (sistema de coordenadas normalizados)
Se transforman los vértices tomando como referencia dos ventanas, una en el sistema (Xp,Yp,Zp), con
los valores máximos y mínimos en x y en y: xpmin, xpmax, ypmin, ypmax (izquierda, derecha, abajo, arriba),
y la otra en el sistema (Xn,Yn,Zn) con los valores xnmin, xnmax, ynmin, ynmax (izquierda, derecha, abajo,
arriba). De acuerdo a lo anterior, las relaciones ancho y alto entre ambas ventanas estarán dadas por
las siguientes fórmulas:
relación del ancho entre ambas ventanas
1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 1
d 0 0 0
0 d 0 0
0 0 0 0
0 0 1 d
x x/ x
y y/ y
z z/ z
/ 1
h
h
h
h h h
→ →
max min
x
max min
max min
y
max min
xn - xn
s =
xp - xp
yn - yn
s =
yp - yp
4. relación del alto entre ambas ventanas
Y finalmente, la transformación de normalización se da con la multiplicación de las siguientes
matrices:
min x min
min y min
1 0 0 xn s 0 0 0 1 0 0 -xp
0 1 0 yn 0 s 0 0 0 1 0 -yp
0 0 1 0 0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1
T2 S T1