如何在 Matlab 中在 z 轴和 y 轴上旋转平面?
How to rotate a plane over z-axis and y-axis in Matlab?
给定 3d 平面上的一个点 (x0,y0,z0)
,首先我想绘制一个通过给定点 (x0,y0,z0)
的平面 x=x0
,然后旋转该平面 alpha
度在 y 轴上,beta
度在 z 轴上。最后的平面也应该通过点point (x0,y0,z0)
.
这是给定点 (4,5,6)
、alpha=30
和 beta=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)
吗?
你的初始点是:
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
根据这个等式你可以生成另外两个点 p2
和 p3
.
将两个 rotation matrix Ry
和 Rz
应用于您的积分:
[p1',p2',p3'] = [p1,p2,p3]*Ry*Rz
然后计算适合 [p1',p2',p3']
的新平面方程 F' = a*x + b*y + c*z + d == 0
(使用叉积),最后调整参数 d
以便 F'(p1) = 0
。我们称这个新方程为 F''
。你有你的最终平面方程,你可以绘制你的表面。
要生成平面,您可以再次使用 meshgrid
并隔离您 F''
函数的 z
参数:z = -(a*x +b*y + d)/c
给定 3d 平面上的一个点 (x0,y0,z0)
,首先我想绘制一个通过给定点 (x0,y0,z0)
的平面 x=x0
,然后旋转该平面 alpha
度在 y 轴上,beta
度在 z 轴上。最后的平面也应该通过点point (x0,y0,z0)
.
这是给定点 (4,5,6)
、alpha=30
和 beta=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)
吗?
你的初始点是:
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
根据这个等式你可以生成另外两个点 p2
和 p3
.
将两个 rotation matrix Ry
和 Rz
应用于您的积分:
[p1',p2',p3'] = [p1,p2,p3]*Ry*Rz
然后计算适合 [p1',p2',p3']
的新平面方程 F' = a*x + b*y + c*z + d == 0
(使用叉积),最后调整参数 d
以便 F'(p1) = 0
。我们称这个新方程为 F''
。你有你的最终平面方程,你可以绘制你的表面。
要生成平面,您可以再次使用 meshgrid
并隔离您 F''
函数的 z
参数:z = -(a*x +b*y + d)/c