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