Matlab中的3D绘图错误

时间:2015-02-26 17:22:35

标签: matlab plot

我试图在Matlab中创建3D图,我几乎没有经验。我真的很想画出这些方程所描述的数字:

x = cos(u) sinh(t) / (cosh(t) - cos(u));    
y = cos(u) sin(u) / (cosh(t) - cos(u));    
z = sin(u);

u和t在-pi到pi之间变化。这就是 Paul Bourke 所谓的Ghost Plane

clc
clear
a = -pi:.01:pi;
b = -pi:.01:pi;
[U,T] = meshgrid(a,b);
X = (cos(U).*sinh(T))./(cosh(T)-cos(U));
Y = (cos(U).*sin(U))./(cosh(T)-cos(U));
Z = sin(U);
figure
surf(X,Y,Z)

使用代码,我得到的东西......难以形容。我如何绘制图形?

1 个答案:

答案 0 :(得分:3)

您的代码是正确的。你只需要放大。

使这一点更具可见性的一些提示:

  • 使用较少的精细网格,将a = ...b = ...更改为:linspace(-pi,pi,40);

  • 将此,'FaceColor','none','EdgeColor','interp');添加到surf命令,仅绘制线条和彩色线条。

  • axis equal vis3d;命令后添加此surf,因此轴将具有正确的缩放比例并在旋转时表现良好。

  • 添加whitebg('black');grid off;以使背景变黑。

  • 如果您想要与原始颜色相同的颜色,请更改为surf(X,Y,Z,-U,...);并添加colormap('HSV');

  • set(gca,'xtick',[]); set(gca,'xticklabel',[]); set(gca,'yticklabel',[]); set(gca,'ytick',[]);删除轴标记

  • 您可能希望使用cameratoolbar:将投影更改为透视投影,一直缩放,将相机移近,以获得良好的视角失真。

<强>瞧:

Plot