三维空间直线旋转曲面绘制 - Matlab代码实现

已知三维坐标系oxyz的坐标平面oxz中存在三条直线,三条直线依次为:l1:z=x,l2:z=x+5,l3:x=5。

本文将使用Matlab代码绘制三维坐标系的z轴和三条空间直线,以及平面oxz的第一卦限中的直线l1点围绕z轴的旋转曲面,直线l3以直线l2为轴的旋转曲面,且两个旋转曲面的母线长度均为2*sqrt(2)。

Matlab代码

% 绘制三维坐标系和三条直线
figure;
axis([-10 10 -10 10 -10 10]);
line([0 0],[0 0],[-10 10],'LineWidth',2,'Color','k'); % z轴
line([-10 10],[0 0],[0 0],'LineWidth',2,'Color','k');
line([0 0],[-10 10],[0 0],'LineWidth',2,'Color','k');
line([0 5],[-5 0],[0 5],'LineWidth',2,'Color','r'); % l1
line([0 5],[-5 0],[5 10],'LineWidth',2,'Color','g'); % l2
line([5 5],[-5 5],[0 0],'LineWidth',2,'Color','b'); % l3
xlabel('x');
ylabel('y');
zlabel('z');

% 绘制l1点围绕z轴的旋转曲面
theta = 0:0.1:2*pi;
r = 2*sqrt(2);
x = r*cos(theta);
y = r*sin(theta);
z = x;
hold on;
for i = 1:length(x)
    p = [x(i) y(i) z(i)];
    R = [cos(theta(i)) -sin(theta(i)) 0; sin(theta(i)) cos(theta(i)) 0; 0 0 1];
    p_new = p*R;
    plot3(p_new(1),p_new(2),p_new(3),'*','Color','m');
end

% 绘制l3以l2为轴的旋转曲面
theta = 0:0.1:2*pi;
r = 2*sqrt(2);
x = r*cos(theta);
y = r*sin(theta);
z = -5 + x;
for i = 1:length(x)
    p = [x(i) y(i) z(i)];
    axis_vec = [0 0 1];
    R = vrrotvec2mat(vrrotvec(axis_vec,[5 0 -5]));
    p_new = p*R;
    plot3(p_new(1),p_new(2),p_new(3),'*','Color','c');
end

结果

三维空间直线旋转曲面

其中,紫色的点表示l1点围绕z轴的旋转曲面,青色的点表示l3以l2为轴的旋转曲面。

代码解析

  1. 绘制三维坐标系和三条直线

    • 使用figure命令创建图形窗口。
    • 使用axis命令设置坐标轴范围。
    • 使用line命令绘制坐标轴和三条直线。
  2. 绘制l1点围绕z轴的旋转曲面

    • 使用thetar定义旋转角度和母线长度。
    • 计算旋转曲面上的点的坐标(x, y, z)
    • 使用hold on命令保留先前绘制的内容。
    • 使用for循环遍历每个旋转角度。
    • 使用R矩阵表示旋转矩阵,将点p绕z轴旋转theta(i)角度,得到新的点p_new
    • 使用plot3命令绘制旋转曲面上的点,颜色为紫色。
  3. 绘制l3以l2为轴的旋转曲面

    • 类似于步骤2,但旋转轴为直线l2。
    • 使用axis_vec定义旋转轴的方向向量。
    • 使用vrrotvec2matvrrotvec函数将轴向量和旋转角度转换为旋转矩阵。
    • 使用plot3命令绘制旋转曲面上的点,颜色为青色。

总结

本文介绍了如何使用Matlab代码绘制三维空间直线旋转曲面,代码简洁易懂,并包含了详细的注释和结果展示。


原文地址: https://www.cveoy.top/t/topic/oQrg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录