我想绘制垂直于矢量的平面,并使用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')
但两者都没有用。谁能帮助我理解我做错了什么? 谢谢!
答案 0 :(得分:1)
您的代码中存在一些问题。最大的一行是xx=(-15:-6:0.25);
它会产生一个空矩阵,因为你要求的矢量从-15
开始并继续到-Inf
。
如果您不理解错误,那么您应该阅读Colon Notation Docs您的矩阵yy
与xx
存在同样的问题。
此外,我认为你对飞机的计算是不正确的。我使用随机生成的v1
和com1
在本地尝试了您的代码,该行与平面不正常。
这里有一个很好的解释,说明如何计算穿过一个点并垂直于已知向量的平面的方程:http://msemac.redwoods.edu/~darnold/math50c/matlab/planes/index.xhtml(向下滚动到一个平面是一个表面)