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®.
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
.
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
hgtransform
| makehgtform
| eye