Matlab中的3D图有什么问题

问题描述 投票:3回答:1

我正在尝试在Matlab中创建3D图,而我几乎没有经验。我真的很想绘制这些方程式描述的图:

x = cos(u)*(2 + cos(v))
y = sin(u)*(2 + cos(v))
z = x^2 - y^2 + 2*x*y*tan^2(v)
-pi <= u <= pi, -pi <= v <= pi

原本应该是哪个情节

(来源:paulbourke.net

我已经尽力了,想出了:

% volume data
u = linspace(-pi,pi,40);
v = linspace(-pi,pi,40);
[u, v] = meshgrid(u, v); 
X =cos(u).*(2 + cos(v));
Y =sin(u).*(2 + cos(v));
Z =(X.^2)-(Y.^2)+(X.*Y.*2.*((tan(v)).^2));
surf(X,Y,Z,'FaceColor','none','EdgeColor','interp')

%shaded surface
colormap(jet)
camlight right

我得到以下内容:

怎么了?

我正在尝试在Matlab中创建3D图,而我几乎没有经验。我真的很想绘制这些方程式描述的图形:x = cos(u)*(2 + cos(v))y = sin(u)*(2 + cos(v))z = x ^ 2。 ..

matlab plot 3d figure
1个回答
4
投票

您的图表实际上没有错。之所以会看到这样的图形,是因为z轴太大。实际上定义其大部分形状的z值比该图中看到的最高值小几个数量级...大约数千个。原因是因为当uv的值为+/- pi/2时,tan未定义,这就是为什么高度偏向这些角度而变得如此高的原因。

© www.soinside.com 2019 - 2024. All rights reserved.