% 定义正方体的顶点坐标, 并将正方体绘制出来
clc;clear;close all
x=[0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,1];    % 正方体顶点的 x 坐标
y=[0,0,1,1,1,0,0,1,1,1,1,1,0,0,0,0];    % 正方体顶点的 y 坐标
z=[0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0];    % 正方体顶点的 z 坐标

V=[x;y;z];                              % 将正方体顶点的坐标, 保存在一个大的矩阵里, 方便后续计算

figure
h=plot3(V(1,:),V(2,:),V(3,:));          % 绘制出正方体
axis([-2,2,-2,2,-2,2])                  % 设置坐标轴的显示范围
xlabel('x')
ylabel('y')
zlabel('z')
grid on
% 将正方体绕 y 轴旋转 60° (pi/3)
for alpha=linspace(0,pi/3,50)
    Ry=[cos(alpha),0,sin(alpha);0,1,0;-sin(alpha),0,cos(alpha)];   % 绕 y 轴旋转的变换矩阵
    W=Ry*V;                                                        % 执行绕 y 轴旋转的坐标变换, 得到新的坐标值
    set(h,'XData',W(1,:),'YData',W(2,:),'ZData',W(3,:))            % 绘制绕 y 轴旋转之后的正方体
    pause(0.02)
end

% 将正方体绕 z 轴旋转 180° (pi)
pause(0.2)
for beta=linspace(0,pi,80)
    Rz=[cos(beta),-sin(beta),0;sin(beta),cos(beta),0;0,0,1];       % 绕 z 轴旋转的变换矩阵
    U=Rz*W;                                                        % 执行绕 z 轴旋转的坐标变换, 得到新的坐标值
    set(h,'XData',U(1,:),'YData',U(2,:),'ZData',U(3,:))            % 绘制绕 z 轴旋转之后的正方体
    pause(0.02)
end

% 将正方体绕 x 轴旋转 45° (pi/4)
pause(0.2)
for gamma=linspace(0,pi/4,30)
    Rx=[1,0,0;0,cos(gamma),-sin(gamma);0,sin(gamma),cos(gamma)];   % 绕 x 轴旋转的变换矩阵
    S=Rx*U;                                                        % 执行绕 x 轴旋转的坐标变换, 得到新的坐标值
    set(h,'XData',S(1,:),'YData',S(2,:),'ZData',S(3,:))            % 绘制绕 x 轴旋转之后的正方体
    pause(0.02)
end

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。