Rotar sobre un eje arbitrario
En el siguiente ejemplo se muestra cómo rotar un objeto sobre un eje arbitrario.
Trasladar a la posición inicial previa a la rotación
Las rotaciones se llevan a cabo por el origen. Por lo tanto, necesita llevar a cabo un desplazamiento para que el eje de rotación previsto se encuentre temporalmente en el origen. Después de aplicar la matriz transformación de la rotación, traslade el objeto de vuelta a su posición original.
Girar superficie
Este ejemplo muestra la manera de girar una superficie por el eje y.
Crear superficie y transformación
Asigne la superficie al objeto de transformada.
t = hgtransform; surf(peaks(40),'Parent',t) view(-20,30) axis manual
Crear transformación
Establezca una matriz de rotación del eje y para girar la superficie -15 grados.
ry_angle = -15*pi/180;
Ry = makehgtform('yrotate',ry_angle);
t.Matrix = Ry;
La superficie girada -15 grados por el eje y que atraviesa el origen.
Trasladar la superficie y girar
Ahora gire la superficie por el eje y que atraviesa el punto x = 20.
Cree dos matrices de traslación, una para trasladar la superficie -20 unidades en x y otra para trasladar 20 unidades hacia atrás. Concatene las dos matrices de traslación con la matriz de rotación en el orden correcto y establezca la transformación.
Tx1 = makehgtform('translate',[-20 0 0]); Tx2 = makehgtform('translate',[20 0 0]); t.Matrix = Tx2*Ry*Tx1;