首页 > 解决方案 > 如何在 Matlab 中的 z 轴和 y 轴上旋转平面?

问题描述

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

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

标签: matlabrotationmatlab-figureplane

解决方案


您的初始点是:

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

应用两个旋转矩阵 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


推荐阅读