【问题标题】:Wrong 3D plot in MatlabMatlab中错误的3D绘图
【发布时间】:2015-02-27 22:08:42
【问题描述】:

我正在尝试在 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)

通过代码,我得到了一些……难以形容的东西。如何绘制图形?

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

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

    一些让这个更容易看到的提示:

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

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

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

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

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

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

    • 您可能希望使用cameratoolbar 来:将投影更改为透视投影,一直放大,将相机移近,以获得漂亮的透视变形。

    瞧:

    【讨论】:

    • 非常感谢!还有一个问题:我如何改变颜色?我的情节更黄了
    • 我上面提到的colormap你加了吗?您还可以查看doc colormap 查看所有不同的。 (您甚至可以定义自己的一个)
    • 不错!不需要它,您只是总结了 Matlab 中可视化的所有主要特征!很好的答案
    • @AnderBiguri:我们是来开导的,不是吗? :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多