如何计算和绘制垂直于已知矢量并通过已知点的平面?

时间:2012-08-29 10:16:11

标签: matlab linear-algebra

我想绘制垂直于矢量的平面,并使用Matlab通过一个点。 我的矢量的坐标为v1 = [2,i],我的点的坐标为com_m1 = [1,i]

我试过了两个:

xx=(-15:-6:0.25);
yy=(-10:-2:0.25);
for i = 1:length(xx)
    for j = 1:length(yy)
            zz_m1(j,i)=(v1(2,2)*(xx(i) - com1(1,1)) + v1(2,2)*(yy(j)-com1(1,2)))/v1(2,3) + com1(1,3);
    end
end
surf(xx,yy,zz_m1, 'FaceColor','red','EdgeColor','none') % Plotting the surface

[xx, yy]=meshgrid(-15:-6:0.25,-10:-1:0.25);
zz_m1=(v1(2,2)*(xx - com1(1,1)) + v1(2,2)*(yy-com1(1,2)))/v1(2,3) + com1(1,3);
surf(xx,yy,zz_m1, 'FaceColor','red','EdgeColor','none')

但两者都没有用。谁能帮助我理解我做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些问题。最大的一行是xx=(-15:-6:0.25);它会产生一个空矩阵,因为你要求的矢量从-15开始并继续到-Inf

如果您不理解错误,那么您应该阅读Colon Notation Docs您的矩阵yyxx存在同样的问题。

此外,我认为你对飞机的计算是不正确的。我使用随机生成的v1com1在本地尝试了您的代码,该行与平面不正常。

这里有一个很好的解释,说明如何计算穿过一个点并垂直于已知向量的平面的方程:http://msemac.redwoods.edu/~darnold/math50c/matlab/planes/index.xhtml(向下滚动到一个平面是一个表面