所以我正在學習python,我目前正在製作3D圖。爲了讓事情有趣,我想製作一個Klein Bottle的陰謀,但不知何故,它根本不起作用。我嘗試了兩種表面參數(一種在Wolfram上,另一種在隨機網站上)都給出了圓環圖。Python:一個Klein瓶的3D陰謀
所以我想知道如果也許我的代碼是錯誤的。任何人可以看看,並告訴我,如果我這樣做是正確的(如果你碰巧知道一個克萊因瓶的參數化,那麼這是值得歡迎的太多: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()
什麼是不工作?我只是運行你的代碼,並得到一個圓環面的圖。你的問題是關於糟糕的Python代碼,還是把錯誤的數學放入良好的Python代碼中? – tpg2114
也看着圓環我也是;你可以改變視角(例如'ax.view_init(75,-30)')來說服你自己中間有一個洞。 – DSM
好吧,我不確定它的數學或代碼,如果你們可以確認我得到的代碼是正確的,那麼至少我可以專注於其他事情:P – Coolcrab