Main Content

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.