viernes, 9 de mayo de 2014

Un poco de geometría: transformaciones geométricas en Realidad Aumentada

Algunos conceptos de geometría teórica básica son necesarios para trabajar con los objetos 3D de la escena en el ámbito de la Realidad Aumentada. En concreto, las transformaciones geométricas de posición, rotación y tamaño; así como su representación matricial. 


En general podemos decir que una transformación toma como entrada elementos como vértices y vectores y los convierte de alguna manera. En este post, veremos las transformaciones más básicas necesarias para el desarrollo de aplicaciones de Realidad Aumentada. En primer lugar, veremos las operaciones en 2D y su notación matricial 2D, después haremos una generalización tridimensional empleando coordenadas homogéneas.

Traslación
traslaciónSe realiza la traslación de un punto p = (px,py) mediante la suma de un vector de desplazamiento t = (tx,ty)a las coordenadas iniciales del punto, para obtener una nueva posición de coordenadas. Si aplicamos esta traslación a todos los puntos del objeto, estaríamos desplazando ese objeto de una posición a otra. 

p′x = px + tx
p′y = py + ty 





Rotación
rotacionPodemos expresar la rotación de un punto p = (px,py) a una nueva posición rotando un ángulo θ respecto del origen de coordenadas, especificando el eje de rotación y un ángulo θ. Las coordenadas iniciales del punto se pueden expresar como:

px = dcosα
py = dsenα

Siendo d la distancia entre el punto y el origen del sistema de coordenadas. Así, usando identidades trigonométricas se pueden expresar las coordenadas transformadas como la suma de los ángulos del punto original α y el que queremos rotar θ como:

p′x = dcos(α+θ) = dcosαcosθ − dsenαsenθ
p′y = dsen(α+θ) = dcosαsenθ + dsenαcosθ

Que sustituyendo en la ecuación anterior, obtenemos:

p′x = px cosθ − py senθ
p′y = px sinθ + py cosθ


Cambio de escala
cambio escalaUn cambio de escala de un objeto bidimensional puede llevarse a cabo multiplicando las componentes x,y del objeto por el factor de escala Sx,Sy en cada eje. Se puede expresar como:

p′x = pxSx
p′y = pySy



Representación matricial
Las operaciones anteriores se expresan en 2D de forma matricial como:

matriz traslacion
Matriz de traslación 2D
matrices rotacion y escalado
Matrices de rotación 2D y escalado 2D







Mientras que en 3D añadimos el elemento homogéneo;  las formas matriciales serán:

matrices de rotacion 3D
matrices traslacion 3D escalado 3D
Matrices de rotación, traslación y escalado 3D

Composición de matrices
Una de las principales ventajas derivadas del trabajo con sistemas homogéneos es la composición de matrices. Matemáticamente esta composición se realiza multiplicando las matrices en un orden determinado, (empezando por la última transformación y acabando por la primera), de forma que es posible obtener la denominada matriz de transformación neta MN resultante de realizar sucesivas transformaciones a los puntos. De este modo, bastará con multiplicar la MN a cada punto del modelo para obtener directamente su posición final. Por ejemplo, si P es el punto original y P′ es el punto transformado, y T1 ··· Tn son transformaciones (rotaciones, escalados, traslaciones) que se aplican al punto P, podemos expresar la transformación neta como:

P′ = Tn × ··· × T2 × T1 × P
P′ = MN ×P

Dejadme para finalizar os recomiende una buena web donde todo esto está muy bien explicado y con más detalle: Wolfram.MathWorld

No hay comentarios:

Publicar un comentario