% 定义正方体的顶点坐标, 并将正方体绘制出来 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)