miércoles, 29 de febrero de 2012

Transformaciones Geométrica

En este capítulo se hace un breve repaso de transformaciones geométricas en 2D y 3D que son ampliamente conocidas y su extensión a otras dimensiones. Existen varias transformaciones geométricas, pero solo se revisan el escalamiento, la translación y la rotación.


Escalamiento

El escalamiento permite cambiar el tamaño de un objeto expandiéndolo o contrayéndolo en sus dimensiones.

Escalamiento 2D

El escalamiento 2D implica el cambio de tamaño de un polígono, donde cada punto  es transformado por la multiplicación de dos factores de escalamiento:  a lo largo de los ejes  respectivamente. De esta forma, las coordenadas del nuevo punto se obtienen como:

                                                 x1 ' = x1 · s1
                                                 x2 ' = x2 · s2

Sea   s = (s1, s2)   el   vector   de   factores   de   escalamiento,   y   S(s)   la   matriz   de escalamiento, en coordenadas homogéneas el escalamiento de un punto p en 2D se puede expresar como el producto matricial  p' = p S (s), es decir:

La Figura 3.1 muestra el efecto de escalamiento de una figura con s1 = 1.5 y  s2 = 2.


Escalamiento 3D

Extendiendo la idea anterior a 3D, el escalamiento implica el cambio de tamaño de un poliedro, donde cada punto  p = (x1, x2, x3)  es transformado por la multiplicación de tres factores de escalamiento: s1, s2 y s3 a lo largo de los ejes X1, X2 y X3 respectivamente, de esta forma, las coordenadas del nuevo punto  p' = (x1 ', x2 ', x3 ' ) se obtienen como:

                                  x1 ' = x1 s1
                                  x2 ' = x2 s2
                                  x3 ' = x3 s3

Sea   s = (s1 , s2 , s3 )   el  vector  de  factores  de  escalamiento,  y  S(s)  la  matriz  de escalamiento, en coordenadas homogéneas el escalamiento de un punto p en 3D se puede expresar como el producto matricial  p' = p S (s) , es decir:


La Figura 3.2 muestra el efecto de escalamiento de una figura con s1 = 2, s2 = 2.5  y s3 = 1.5.


Translación

La  translación  permite  desplazar  un  objeto  a  lo  largo  de  sus  dimensiones,  como resultado se obtiene un cambio de posición.

Translación 2D

La  translación  2D  implica  el  desplazamiento  de  un  polígono,  donde  cada  punto p = (x1 , x2 )  es trasladado d1 unidades en el eje X1 y d2 unidades en el eje X2, de esta forma, las coordenadas  del nuevo punto  p' = (x1 ', x2 ' ) , se obtienen como:

                         x1 ' = x1 + d1
                         x2 ' = x2 + d 2

Sea   d = (d1 , d 2 )   el  vector  de  distancias,  y  T(d)  la  matriz  de  translación,  en coordenadas homogéneas la translación de un punto p en 2D se puede expresar como el producto matricial  p' = p T (d ) , es decir:

La Figura 3.3 muestra el efecto de translación de una figura con d1 = 1 y  d2 = 2.




Translación 3D

Basándose   en   la   idea   anterior,   se   tiene   que   la   translación   3D   implica   el desplazamiento de un poliedro, donde cada punto  p = (x1 , x2 , x3 ) es trasladado d1 unidades en el eje X1 , d2 unidades en el eje X2 y d3 unidades en el eje X3, de esta forma, las coordenadas del nuevo punto  p' = (x1 ', x2 ', x3 ' ) se obtienen como:

                                    x1 ' = x1 + d1
                                    x2 ' = x2 + d 2
                                    x3 ' = x3 + d3

Sea  d = (d1 , d 2 , d3 )   el  vector  de  distancias,  y  T(d)  la  matriz  de  translación,  en coordenadas homogéneas la translación de un punto p en 3D se puede expresar como el producto matricial  p' = p T (d ) , es decir:

La Figura 3.4 muestra el efecto de translación de una figura con d1 = 2, d2 = 0 y d3 = 2.






Rotación

La rotación permite girar un objeto sobre un eje de rotación, dado un valor de ángulo de rotación 0 y su dirección.

Rotaciones 2D

La rotación de un objeto en 2D se lleva a cabo alrededor de un punto, que es el eje puntual (cero-dimensional) de rotación. Las rotaciones principales 2D son aquellas que se llevan a cabo alrededor del origen, las rotaciones sobre cualquier otro punto arbitrario se llaman  rotaciones  generales  2D.  En  esta  Sección  3.5  ,  se  analizan  sólo  las  rotaciones principales  para  todas  las  dimensiones,  en  la  Sección  3.6 se  discuten  las  rotaciones generales.

Para generar una rotación, se especifica el ángulo de rotación 0, y el punto de rotación (pivote) sobre el cual el objeto será rotado. Los ángulos de rotación positivos definen una rotación en sentido contrario a las manecillas del reloj sobre el punto pivote (del eje X1 al eje X2), entonces los ángulos de rotación negativos producen una rotación en el sentido de las manecillas (del eje X2 al eje X1). [Hearn 95] describe la rotación 2D como el giro sobre el eje de rotación que es perpendicular al plano X1X2 (mejor conocido como plano XY) y que pasa a través del punto pivote.

Si el punto pivote se encuentra sobre el origen (Figura 3.5), se tiene que: r es la distancia del punto  p = (x1, x2 )  al origen, 0 define la posición angular del punto p desde la horizontal, y 0 el ángulo de rotación de p para producir el nuevo punto p' = (x1 ', x2 ' ) .

Utilizando  coordenadas  polares,  el  punto   p = (x1 , x2 )   se  puede  escribir  como p = (r, Ø )  y el punto  p' = (x1 ', x2 ' )  como  p' = (r, Ø + 0 ) . Pasando después estos puntos de coordenadas polares a rectangulares se tiene que:

            x1 = r cos(Ø )
           x1 ' = r cos(Ø + 0 )
           x2 = r sin(Ø )
          x2 ' = r sin(Ø + 0 )

 Aplicando algunas propiedades trigonométricas:

                       x1 ' = r cos(Ø + 0 ) = r cosØ cos0 − r sin Ø sin0
                      x2 ' = r sin(Ø + 0 ) = r cosØ sin0 + r sin Ø cos 0   
         
 Substituyendo los valores de  x1 = r cos(Ø )  y  x2 = r sin(Ø ) se obtienen las ecuaciones para rotar un punto  p = (x1, x2 ) alrededor del origen dado un ángulo Ø:

                                 x1 ' = x1 cos 0 − x2 sin 0
                                 x2 '= x1 sin 0+ x2 cos0

Ecuación 3.9: Formulas para la rotación 2D alrededor del origen.

Sea  R(0)  la  matriz  de  rotación  sobre  el  origen,  en  coordenadas  homogéneas  la rotación de un punto p alrededor del origen en 2D se puede expresar como el producto matricial  p' = p R(0 ) , es decir:


Ecuación 3.10: Expresión matricial para la rotación 2D.

La Figura 3.6 muestra el efecto de rotación de una figura con 0 = 45°.


Rotaciones 3D

A diferencia de la rotación en el espacio 2D, donde para hacer rotar un objeto se necesita un punto (cero-dimensional), en 3D para hacer rotar un objeto se necesitan dos puntos no coincidentes que determinan un segmento de recta, cuya línea de soporte define un eje lineal (uni-dimensional) de rotación.

Las rotaciones principales 3D, son aquellas cuando el eje de rotación se encuentra sobre alguno de los tres ejes principales: X1, X2 o X3, las rotaciones sobre cualquier otro eje arbitrario son llamadas rotaciones generales 3D. Se recuerda que inicialmente, se analizan las rotaciones principales.

Por convención, los ángulos de rotación positivos producen rotaciones en contra de las manecillas del reloj sobre el eje de rotación, esto es si se observa el giro desde la parte positiva del eje hacia el origen. Otra forma de determinar la dirección de un giro positivo es mediante la regla de la mano derecha (Figura 3.7), que dice que: “Si se coloca el dedo pulgar de la mano derecha sobre el eje de rotación apuntando hacia la parte positiva de dicho eje, el giro natural del resto de los dedos indica la dirección positiva del giro”.


Para entender el concepto de rotación en 3D como una extensión de la rotación 2D, hay que recordar que la rotación 2D es el giro sobre el eje de rotación, que es perpendicular al plano X1 X2, el cual en 3D corresponde al eje X3, entonces se tiene la primera de las rotaciones principales.

De esta forma, por cada punto  p = (x1 , x2 , x3 )  dado un ángulo 0, puede ser rotado sobre el eje X3 en sentido contrario a las manecillas del reloj, obteniendo las coordenadas del nuevo punto  p' = (x1 ', x2 ', x3 ' ) de la misma forma en cómo se analizó en el espacio 2D, quedando la coordenada x3 sin cambio, entonces, se extienden las formulas para la rotación 2D  a 3D como:

                          x1 ' = x1 cos 0 − x2 sin 0
                          x2 ' = x1 sin 0 + x2 cos 0
                          x3 ' = x3

              Ecuación 3.11: Fórmulas para la rotación 3D alrededor del eje X3.

Sea R3(0) la matriz de rotación alrededor del eje X3, en coordenadas homogéneas la rotación de un punto p alrededor de dicho eje, se puede expresar como el producto matricial p' = p R3 (0 ) , es decir:


La Figura 3.8 muestra el efecto de rotación sobre el eje X3 de una figura con 0 = 20°.


















No hay comentarios:

Publicar un comentario