通過Python繪制九種二次曲面的示例詳解
二次曲面
python中繪制三維圖需要將坐標(biāo)系聲明為3d
。
球面方程為
x2+y2+z2=R2
寫為極坐標(biāo)形式為
x=Rsinθcosφ
y=Rsinθsinφ
z=Rcosθ
令R = 1 R=1R=1,則畫圖為
代碼如下
>>> import matplotlib.pyplot as plt >>> import numpy as np >>> theta = np.arange(0,6.4,0.1).reshape(64,1) >>> phi = np.arange(0,3.2,0.1).reshape(1,32) >>> x = np.sin(theta)*np.cos(phi) >>> y = np.sin(theta)*np.sin(phi) >>> z = np.cos(theta) >>> ax = plt.gca(projection='3d') >>> ax.plot_surface(x,y,z) <mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x000001CECF13A730> >>> plt.show()
二次曲面共有九種,代碼均與橢球曲面類似,為了加強(qiáng)立體感,可在畫圖的時(shí)候設(shè)置顏色映射,下列各圖部分用到
from matplotlib import cm #... ax.plot_surface(x,y,z,cmap=cm.coolwarm)
a,b,c均為1時(shí)的曲面
1.橢圓錐面 x2/a2+y2/b2-z2/c2=0
2.橢球面 x2/a2+y2/b2+z2/c2=1
3.單葉雙曲面 x2/a2+y2/b2-z2/c2=1
4.雙葉雙曲面 x2/a2+y2/b2-z2/c2=-1
5.橢圓拋物面 z=x2/a2+y2/b2
6.雙曲拋物面 z=x2/a2-y2/b2
7.橢圓柱面 x2/a2+y2/b2=1
8.雙曲柱面 x2/a2-y2/b2=1
9.拋物柱面 y2=2px
在上面各式中,橢圓錐面、單葉雙曲面、雙葉雙曲面具有極為相似的表達(dá)式
故可繪制動(dòng)態(tài)圖來表示這一過程,由于animation中無法繪制plot_surface
,所以采用將單張圖片生成gif的方式。
import numpy as np import matplotlib.pyplot as plt from matplotlib import cm import imageio theta = np.arange(0,6.4,0.1) z = np.arange(-2,2,0.02).reshape(200,1) gifImgs = [] fig = plt.figure() for i in np.arange(-1,1,0.02): theta = np.arange(0,6.4,0.1).reshape(1,64) Z = np.repeat(z,64).reshape(200,64) x = np.sqrt(z**2+i)*np.cos(theta) y = np.sqrt(z**2+i)*np.sin(theta) ax = plt.gca(projection='3d') ax.plot_surface(x,y,Z,cmap=cm.coolwarm) plt.savefig("%.2f.jpg" % i) gifImgs.append(imageio.imread("%.2f.jpg" % i)) imageio.mimsave("test.gif",gifImgs,fps=5)
到此這篇關(guān)于通過Python繪制九種二次曲面的示例詳解的文章就介紹到這了,更多相關(guān)Python曲面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何將list中的string轉(zhuǎn)換為int
這篇文章主要介紹了Python如何將list中的string轉(zhuǎn)換為int,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07基于django和dropzone.js實(shí)現(xiàn)上傳文件
這篇文章主要介紹了基于django和dropzone.js實(shí)現(xiàn)上傳文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11小白如何入門Python? 制作一個(gè)網(wǎng)站為例
以制作一個(gè)網(wǎng)站為例,聊一聊小白如何入門Python,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Python?Poetrya項(xiàng)目依賴管理安裝使用詳解
這篇文章主要為大家介紹了Python?Poetrya項(xiàng)目依賴管理安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11