Matlab 中错误的 3D 图
Wrong 3D plot in Matlab
我正在尝试在 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)
有了代码,我得到了一些……难以形容的东西。如何绘制图形?
您的代码是正确的。您只需要放大即可。
一些提高可见度的提示:
使用较少的精细网格,将 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
来:将投影更改为 透视投影,完全缩小,将相机移入非常接近,以获得很好的透视扭曲。
瞧:
我正在尝试在 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)
有了代码,我得到了一些……难以形容的东西。如何绘制图形?
您的代码是正确的。您只需要放大即可。
一些提高可见度的提示:
使用较少的精细网格,将
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
来:将投影更改为 透视投影,完全缩小,将相机移入非常接近,以获得很好的透视扭曲。
瞧: