在Matlab中绘制一个3D平面?

时间:2014-01-11 14:21:49

标签: matlab plot

如何在Matlab中的特定点绘制3D平面?

考虑平面方程

Z=(-a * X - b * Y)/c

具有以下系数:

a=0.01; b=0.03; c= 1; d=0.

我想在点(100,100)周围绘制这个平面而不是原点(0,0)。怎么可能这样做?

我使用的代码:

[X,Y] = meshgrid(x);
a=0.1;
b=0.2;
c=1;
d=0;
Z=(-a * X - b * Y)/c;
surf(X,Y,Z)
shading flat
xlabel('x')
ylabel('y')
zlabel('z')

1 个答案:

答案 0 :(得分:3)

surf()只是绘制你提供的任何点数。要生成这些点,您需要在XY给出的特定坐标集上评估等式。因此,您希望这些点以感兴趣区域为中心:

[X, Y] = meshgrid(95:0.1:105);  % e.g. +/-5 at resolution of 0.1

或者说,对于任意视图坐标mn

[X, Y] = meshgrid(m-20:m+20, n-20:n+20);  % e.g. +/-20 at resolution of 1

这可以让你看到100,100左右的一个以原点为中心的平面,我认为这就是你所要求的。

或者,如果您希望平面本身居中于100,100,那么您需要在等式中的偏移量:

Z=(-a * (X - 100) - b * (Y - 100))/c;

因此,以原点为中心的视图相当于在-100,-100左右查看原始平面。