Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

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;