Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Transformaciones compatibles con hgtransform

Objetos de transformación

La propiedad Matrix de un objeto de transformación aplica una transformación a todos los objetos secundarios del objetos al unísono. Las transformaciones incluyen la rotación, la traslación y el escalado. Defina una transformación con una matriz de transformaxión de 4 por 4.

Crear una matriz de transformación

La función makehgtform simplifica la creación de matrices para llevar a cabo la rotación, la traslación y el escalado. Para obtener más información sobre la creación de matrices de transformación mediante makehgtform, consulte Anidar transformaciones para movimientos complejos.

Rotación

Las transformaciones de rotación siguen la regla de la mano derecha: rotar objetos sobre los ejes x, y o z con ángulos positivos rotando en sentido de las agujas del reloj mientras se observan los ejes respectivos hacia el origen. Si el ángulo de rotación es theta, la siguiente matriz define una rotación de theta sobre el eje x.

Para crear una matriz de transformación para la rotación sobre un eje arbitrario, utilice la función makehgtform.

Traslación

La transformación de traslación mueve objetos con respecto a sus ubicaciones actuales. Especifique la traslación como distancias tx, ty y tz en las unidades de espacio de datos. La siguiente matriz muestra la ubicación de estos elementos en la matriz de transformación.

Escalado

Las transformaciones de escalado cambian el tamaño de los objetos. Especifique los factores de escala sx, sy y sz y cree la siguiente matriz.

No puede utilizar factores de escala que sean iguales o inferiores a cero.

La transformación predeterminada

La transformación predeterminada es la matriz de identidad que puede crear con la función eye. Esta es la matriz de identidad.

Consulte Deshacer operaciones de transformación.

Transformaciones no permitidas: Perspectiva

Las transformaciones de perspectiva cambian la distancia a la que se ve un objeto. La siguiente matriz es un ejemplo de una matriz de transformación de perspectiva, que no está permitida por las gráficas de MATLAB®.

En este caso, py es el factor de perspectiva.

Transformaciones no permitidas: Cizalla

Las transformaciones de cizalla mantienen fijados todos los puntos de una línea determinada (o plano, en coordenadas 3D) mientras cambia el resto de puntos paralelos a la línea (plano) proporcionalmente a su distancia perpendicular de la línea fijada (plano). La siguiente matriz es un ejemplo de una matriz de transformación de cizalla, que no está permitida por hgtransform.

En este caso, sx es el factor de cizalla y puede sustituir a cualquier elemento cero en una matriz de identidad.

Transformaciones absolutas frente a relativas

Las transformaciones se especifican en términos absolutos, no relativos, a la transformación actual. Por ejemplo, si aplica una transformación que traslada el objeto de transformación 5 unidades en la dirección x y, después, aplica otra transformación que lo mueve 4 unidades en la dirección y, la posición resultante del objeto es 4 unidades en la dirección y desde su posición original.

Si desea que las transformaciones se acumulen, debe concatenar las transformaciones individuales en una única matriz. Consulte Combinar transformaciones en una matriz.

Combinar transformaciones en una matriz

Habitualmente es más eficiente combinar varias operaciones de transformación en una sola matriz concatenando (multiplicando) las matrices individuales y estableciendo la propiedad Matrix al resultado. La multiplicación de matrices no es conmutativa, de modo que el orden en el que multiplique las matrices afecta al resultado.

Por ejemplo, suponga que desea realizar una operación de escalada, de traslación y, después, de rotación. Asumiendo que R, T y S son sus matrices de transformación individuales, multiplique las matrices de la siguiente forma:

C = R*T*S % operations are performed from right to left

S es la matriz de escalada, T es la matriz de traslación, R es la matriz de rotación y C es la composición de las tres operaciones. Después, establezca la propiedad Matrix del objeto de transformación en C:

hg = hgtransform('Matrix',C);

Multiplicar la transformación por la matriz de identidad

Los siguientes conjuntos de afirmaciones no son equivalentes. El primer conjunto:

hg.Matrix = C;
hg.Matrix = eye(4);

resulta en la eliminación de la transformación C. El segundo conjunto:

I = eye(4);
C = I*R*T*S;
hg.Matrix = C;

aplica la transformación C. Concatenar la matriz de identidad a otras matrices no tiene efecto sobre la matriz compuesta.

Deshacer operaciones de transformación

Debido a que las operaciones de transformación se especifican en términos absolutos (no relativos a la transformada actual), puede deshacer una serie de transformaciones estableciendo la transformación actual en una matriz de identidad. Por ejemplo:

hg = hgtransform('Matrix',C);
...
hg.Matrix = eye(4);

devuelve los objetos que contiene el objeto de transformación, hg a su orientación previa a la aplicación de la transformación C.

Para obtener más información sobre la matriz de identidad, consulte la función eye

Consulte también

| |

Temas relacionados