我试图在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)
使用代码,我得到的东西......难以形容。我如何绘制图形?
答案 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
:将投影更改为透视投影,一直缩放,将相机移近,以获得良好的视角失真。
<强>瞧:强>