Transformaciones 3D
Índice
1.
Sistemas de Coordenadas
2.
Transformaciones Básicas
1.
Traslación
2.
Escalado
3.
Rotación Plana
4.
Afilamiento
5.
Deformaciones
3.
Composición de Transformaciones
4.
Rotación General
5.
Transformación de Sistemas de Coordenadas
Introducción
•
Nos movemos en un mundo 3D
•
Se debe permitir trabajar directamente
con objetos 3D
z
y
x
•Sin embargo al final siempre habrá que generar una image 2D en pantalla
•
Las transformaciones son las mismas que antes,
añadiendo una tercera componente
–
traslaciones
–
rotaciones
–
escalados
Sistemas de Coordenadas
•
Una escena 3D se define por los puntos,
líneas y planos que la componen
•
Necesitamos un sistema para poder
referenciar las coordenadas, al igual que
ocurría en 2dimensiones
•
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
Z
(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)
X
Transformaciones 3-D
•
Son extensiones de las transformaciones en dos dimensiones
•
En el caso 2D teníamosinicialmente matrices 2x2, pero eso sólo nos permitía
operaciones del tipo
⎛ a1
( x' , y ' ) = ( x, y ) ⋅ ⎜⎜
⎝ b1
•
x' = ax + by
Por eso pasamos a matrices 3x3, utilizando coordenadas homogéneas
⎛ a1
⎜
( x' , y ' ,1) = ( x, y,1) ⋅ ⎜ b1
⎜c
⎝ 1
•
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
Traslación
•
Z
Reposiciona un objeto desplazándolo a las
nuevas coordenadas
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 ' )
⎛1
⎜
⎜0
T =⎜
0
⎜
⎜t
⎝ x
0
1
0
00
ty
1
tz
0⎞
⎟
0⎟
0⎟
⎟
1 ⎟⎠
T ( − t x , −t y , − t z )
•
La transformación inversa sería
•
Para trasladar objetos, trasladamos sólo sus vértices y
redibujamos
P' = P ⋅ T
Escalado con respecto al origen
•
La posición del punto se multiplica por una constante
•
Hay que especificar tres factores de escala
Z
⎧ 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
⎝
0
sy
0
0
0
sz
0
0
0⎞
⎟
0⎟
0⎟
⎟
1 ⎟⎠
P' = P ⋅ S
⎛1 1 1⎞
S⎜ , , ⎟
⎜s s s ⎟
⎝ x y z⎠
•
La transformación inversa sería
•
Para trasladar objetos, trasladamos sólo sus vértices y redibujamos
Rotación Plana alrededor del eje Z
•
El eje de rotación es paralelo a uno de los ejes principales
•
Elsigno del ángulo viene dado por la regla de la mano
derecha
•
El punto al rotar permanece en el plano perpendicular al eje
de rotación
•
La expresión para la rotación en el eje Z es
Z
Y
X
⎧ x' = x cos θ − y sin θ
⎪
⎨ y ' = x sin θ + y cos θ
⎪
z' = z
⎩
•
P’ = (x’, y’, z’)
En forma matricial:
⎛ cos θ
⎜
⎜ − sin θ
RZ = ⎜
0
⎜
⎜ 0
⎝
sin θ
cos θ
0
0
0 0⎞
⎟
0 0⎟
1 0⎟
⎟
0 1 ⎟⎠
Y
P = (x, y, z)R
P ' = P ⋅ RZ
X
Z
Rotación Plana alrededor del eje X
•
Para calcular la expresión de rotación alrededor del eje X, intercambiamos las variables
⎧ x' = x cos θ − y sin θ
⎪
⎨ y ' = x sin θ + y cos θ
⎪
z' = z
⎩
x' = x
⎧
⎪
⎨ y ' = y cos θ − z sin θ
⎪ z ' = y sin θ + z cos θ
⎩
Alrededor del eje Z
P’ = (x’, y’, z’)
Z
P = (x, y, z)
Y
X
Alrededor del eje X
•
En forma matricial:
0
⎛1
⎜
⎜0 cos θ
RX = ⎜
0 − sin θ
⎜
⎜0
0
⎝
0
sin θ
cos θ
0
P' = P ⋅ RX
0⎞
⎟
0⎟
0⎟
⎟
1 ⎟⎠
Rotación Plana alrededor del eje Y
•
Para calcular la expresión de rotación alrededor del eje Y, intercambiamos las variables
⎧ x' = x cos θ + z sin θ
⎪
y' = y
⎨
⎪ z ' = − x sin θ + z cos θ
⎩
⎧ x' = x cos θ − y sin θ
⎪
⎨ y ' = x sin θ + y cos θ
⎪
z' = z
⎩
Alrededor del eje Z
P’ = (x’, y’, z’)
X
P = (x, y,...
Regístrate para leer el documento completo.