import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 克莱恩瓶的近似参数方程(注意这不是精确的克莱恩瓶方程) def klein_bottle(u, v): x = 3 * np.cos(u) * (1 + np.sin(u)) + np.cos(u / 2) * np.cos(v) * np.sin(u) y = 8 * np.sin(u) + np.cos(u / 2) * np.sin(v) * np.sin(u) z = 4 * (1 - np.sin(u / 2)) * np.sin(v) return x, y, z # 创建u和v的参数网格 u = np.linspace(0, 4 * np.pi, 100) # 需要绕两圈以近似克莱恩瓶 v = np.linspace(0, 2 * np.pi, 100) u, v = np.meshgrid(u, v) # 计算克莱恩瓶上的点 x, y, z = klein_bottle(u, v) # 创建3D图形对象 fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(111, projection='3d') # 绘制克莱恩瓶曲面 ax.plot_surface(x, y, z, rstride=5, cstride=5, color='b', alpha=0.3, edgecolor='k') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show()
09-07
5183

05-20
2650
