Visualización Computacional de Datos I Transformaciones
Transformaciones Las transformaciones se aplican sobre los puntos que definen el objeto Pi P1 P2 Pi = (px, py)
Transformaciones Simples Escala isotrópica Pi = (px, py) sx 0 0 sy S = Pi = S.Pi
Transformaciones Simples Traslación dx dy Pi = Pi + D Pi = (px, py) D = (dx, dy)
Transformaciones Simples Rotación Pi = (px, py) cos -sin sin cos R = Pi = R.Pi
Cuerpo rígido / Eucledianas Preserva distancias Preserva ángulos Rigidas / Euclideanas Translación Rotación
Similares Similares Rígidas / Euclideanas Conserva ángulos Translación Escala isotrópica Rotación
Lineales Similares Rígidas / Eucledianas Lineales Translación Escala isotrópica Escala Rotación Reflexión Shear
Transformaciones afines Preserva lineas paralelas Afines Similares Rígidas / Euclideanas Lineales Translación Escala isotrópica Escala Rotación Reflexión Shear
Transformaciones Projectivas Preserva líneas Projectivas Afines Similares Rígidas / Euclideanas Lineales Translación Escala isotrópica Escala Rotación Reflexión Shear Perspectivas
Perspective Projection
General / no lineales No preserva líneas From Sederberg and Parry, Siggraph 1986
Como representar las transformaciones? x' = ax + by + c y' = dx + ey + f x' y' a b d e x y c f = + p' = M p + t
Coordenadas homogeneas Se agrega una dimensión extra en 2D, se usa 3 x 3 matrices en 3D, se usa 4 x 4 matrices Cada punto tiene entonces un valor extra, w x' y' z' w' a e i m b f j n c g k o d h l p x y z w = p' = M p
Pasar a coordenadas homogeneas x' = ax + by + c y' = dx + ey + f Affine formulation Homogeneous formulation x' y‘ 1 a b d e 0 0 c f 1 x y 1 x' y' a b d e x y c f = = + p' = M p + t p' = M p
Translación (tx, ty, tz) x' y' z' 1 x' y' z' 1 1 1 tx ty tz 1 x y z 1 Por que utilizar coordenadas homogeneas? Porque ahora traslaciones se expresan como matriz! x' y' z' 1 x' y' z' 1 1 1 tx ty tz 1 x y z 1 =
Escala (sx, sy, sz) x' y' z' 1 sx sy sz 1 x y z 1 = Scale(s,s,s) p' p Isotropica (uniforme) scaling: sx = sy = sz q' q x x' y' z' 1 sx sy sz 1 x y z 1 =
Rotación x' y' z' 1 cos θ sin θ -sin θ cos θ 1 1 x y z 1 = ZRotate(θ) p' Sobre eje z θ p x z x' y' z' 1 cos θ sin θ -sin θ cos θ 1 1 x y z 1 =