【问题标题】:Plot a 3D-plane in Matlab?在 Matlab 中绘制一个 3D 平面?
【发布时间】:2014-01-12 01:38:53
【问题描述】:

如何在 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')

【问题讨论】:

  • 您的意思是要在 X=100 和 Y=100 附近绘制它?在什么范围内?
  • 如果你在matlab中电镀一个3D平面,平面的中心默认在(0,0,0)。我想让平面的中心位于 (100,100,0) 而不是 (0,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) 着色平面 xlabel('x'); ylabel('y'); zlabel('z');
  • 谢谢。使用meshgridXY 的范围由x 中的值确定。 x 是如何定义的? – 请在问题本身中包含其他信息,而不是在评论中。使用问题文本下方的“编辑”按钮。

标签: matlab plot


【解决方案1】:

surf() 只是绘制你给它的任何一组点。要生成这些点,您需要在XY 给出的一组特定坐标处评估方程。因此,您希望这些点以感兴趣区域为中心:

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

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

[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 附近查看原始平面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2020-02-04
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多