【问题标题】:How to rotate a plane over z-axis and y-axis in Matlab?如何在 Matlab 中的 z 轴和 y 轴上旋转平面?
【发布时间】:2021-09-11 07:39:28
【问题描述】:

给定 3d 平面上的一个点 (x0,y0,z0),首先我想绘制一个通过给定点 (x0,y0,z0) 的平面 x=x0,然后在 y 轴上旋转该平面 alpha 度和 beta z 轴上的度数。最终平面也应该通过点(x0,y0,z0)

这是一个示例,当给定点是(4,5,6)alpha=30beta=45,我设法仅在 y 轴上旋转 30 度:

x0=4;
y0=5;
z0=6;
alpha=30;
beta=45;
plot3(x0,y0,z0,'r*')
hold on
[Y1, Z1] = meshgrid(linspace(-10,10), linspace(0,10));
X1 = x0*ones(size(Y1));
surf(X1,Y1,Z1)
hold on
xlabel('X');
ylabel('Y');
zlabel('Z');
X2 = (Z1)*tand(alpha)-z0*ones(size(Z1))*tand(alpha)+X1;
surf(X2,Y1,Z1)

你能帮我同时在y轴和z轴上旋转原始平面x=x0,以便最终平面通过(x0,y0,z0)吗?

【问题讨论】:

    标签: matlab rotation matlab-figure plane


    【解决方案1】:

    你的出发点是:

    p1 = [x0,y0,z0]
    

    你的初始平面方程是:

    F = a*x + b*y + c*z + d == 0 % with a=1, b=0, c=0 and d=-x0
    F = x == x0
    

    基于这个等式,您可以再生成两个点p2p3

    将两个rotation matrix RyRz 应用于您的积分:

    [p1',p2',p3'] = [p1,p2,p3]*Ry*Rz
    

    然后计算你的新平面方程F' = a*x + b*y + c*z + d == 0 适合[p1',p2',p3'](使用叉积),最后调整参数d 使F'(p1) = 0。让我们称这个新方程为F''。你有你的最终平面方程,你可以绘制你的表面。

    要生成平面,您可以再次使用meshgrid 并隔离您的z 参数F'' 函数:z = -(a*x +b*y + d)/c

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 1970-01-01
      • 2018-11-04
      • 2021-09-27
      • 1970-01-01
      • 2012-01-06
      • 2017-06-10
      • 1970-01-01
      • 2019-08-14
      相关资源
      最近更新 更多