所以我正在学习 python,我目前正在制作 3D 绘图。为了让事情变得有趣,我想制作一个克莱因瓶的情节,但不知何故它根本不起作用。我尝试了表面的两种参数化(一个在Wolfram上,一个在随机网站上)都给出了一个圆环图。
所以我想知道我的代码是否错误。任何人都可以看看并告诉我我是否做得对(如果你碰巧知道克莱因瓶的参数化,那么这也是受欢迎的:P)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
def surf(u, v):
X = (3+(1+np.sin(v)) + 2*(1 - np.cos(v)/2)*np.cos(u))*np.cos(v)
Y = (4+2*(1 - np.cos(v)/2) * np.cos(u))*np.sin(v)
Z = -2*(1-np.cos(v)/2)*np.sin(u)
return X,Y,Z
ux, vx = np.meshgrid(np.linspace(0, 2*np.pi, 20),
np.linspace(0, 2*np.pi, 20))
x,y,z = surf(ux, vx)
fig = plt.figure()
ax = fig.gca(projection="3d")
plot = ax.plot_surface(x,y,z, rstride=1, cstride=1, cmap=cm.jet,
linewidth=0, antialiased=False)
plt.show()