Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. 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

Figure contains an axes object. The axes object contains an object of type surface.

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;

Figure contains an axes object. The axes object contains an object of type surface.

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;

Figure contains an axes object. The axes object contains an object of type surface.