我想用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')
但两者都不起作用。有人能帮我理解我做错了什么吗?谢谢
您的代码中存在一些问题。最大的是这一行,xx=(-15:-6:0.25);
,它产生了一个空矩阵,作为你对从-15
开始一直到-Inf
的向量的要求。
如果你不理解这个错误,那么你可能应该阅读科隆符号文档。你的矩阵yy
和xx
有同样的问题。
此外,我认为你对这架飞机的计算是错误的。我使用随机生成的v1
和com1
在本地尝试了您的代码,但这条线与平面不垂直。
这里有一个很好的解释,说明如何计算通过一个点并垂直于已知向量的平面的方程:http://msemac.redwoods.edu/~darnold/math50c/matlab/planes/index.xhtml(向下滚动到平面是曲面)