Main Content

Transformadas compatibles con hgtransform

Transformación de objetos

La propiedad Matrix de los objetos de transformada aplica una transformación a los objetos secundarios de todos los objetos al unísono. La transformación incluye la rotación, la traslación y el escalado. Defina una transformada con una matriz de transformada 4x4.

Creación de una matriz de transformada

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 transformada mediante makehgtform, consulte Anidar transformaciones para movimientos complejos.

Rotación

La rotación de transformada sigue 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 z, la siguiente matriz define una rotación de z sobre el eje x.

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

Traslación

La transformada de traslación mueve objetos con respecto a sus ubicaciones actuales. Especifique la traslación según las 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 transformada.

Escalado

Las transformadas de escalado cambian el tamaño de los objetos. Especifique los factores de escala x, sy y sz y cree las siguientes matrices.

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

La transformada predeterminada

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

Consulte Deshacer operaciones de transformada.

Transformadas no permitidas: Perspectiva

Las transformadas de perspectiva cambian la distancia en la que ve un objeto. La siguiente matriz es un ejemplo de una matriz de transformada de perspectiva, que no está permitida por la gráfica de MATLAB®.

[10000100001000px0]

En este caso, px es el factor de perspectiva.

Transformadas no permitidas: Cizalla

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

[1sx00010000100001]

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

Transformadas absolutas frente a relativas

Las transformadas se especifican en términos absolutos, no relativos, para la transformada actual. Por ejemplo, si aplica una transformada que cambia el objeto de transformada 5 unidades en la dirección x y, después, aplica otra transformada que la 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 transformadas se acumulen, debe concatenar las transformadas individuales en una única matriz. Consulte Transformadas combinadas en una matriz.

Transformadas combinadas en una matriz

Habitualmente es más eficiente combinar varias operaciones de transformadas en una matriz concatenando (multiplicando) las matrices individuales y estableciendo la propiedad Matrix al resultado. La multiplicación de la matriz no es acumulativa, de forma 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 transformada 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 transformada en C:

hg = hgtransform('Matrix',C);

Multiplicar la transformada 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 transformada C. El segundo conjunto:

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

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

Deshacer operaciones de transformada

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

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

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

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

Consulte también

| |

Temas relacionados