根据法线向量和Matlab或matplotlib中的点绘制平面 [英] Plot a plane based on a normal vector and a point in Matlab or matplotlib
本文介绍了根据法线向量和Matlab或matplotlib中的点绘制平面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何从法向矢量和一个点在matlab或matplotlib中绘制平面?
How would one go plotting a plane in matlab or matplotlib from a normal vector and a point?
推荐答案
对于Matlab:
point = [1,2,3];
normal = [1,1,2];
%# a plane is a*x+b*y+c*z+d=0
%# [a,b,c] is the normal. Thus, we have to calculate
%# d and we're set
d = -point*normal'; %'# dot product for less typing
%# create x,y
[xx,yy]=ndgrid(1:10,1:10);
%# calculate corresponding z
z = (-normal(1)*xx - normal(2)*yy - d)/normal(3);
%# plot the surface
figure
surf(xx,yy,z)
注意:仅当normal(3)不为0时,此解决方案才有效.如果平面平行于z轴,则可以旋转尺寸以保持相同的方法:
Note: this solution only works as long as normal(3) is not 0. If the plane is parallel to the z-axis, you can rotate the dimensions to keep the same approach:
z = (-normal(3)*xx - normal(1)*yy - d)/normal(2); %% assuming normal(3)==0 and normal(2)~=0
%% plot the surface
figure
surf(xx,yy,z)
%% label the axis to avoid confusion
xlabel('z')
ylabel('x')
zlabel('y')
这篇关于根据法线向量和Matlab或matplotlib中的点绘制平面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文