Python 繪製圓柱體(3D圖)

Python 繪製圓柱體(3D圖)

不知道爲何,介紹用Python畫3D圖形,很少提到圓錐體、圓柱體。或者是有些工具可以直接畫出吧。
在上一篇文章中解決了圓錐體的問題(見下鏈接),現在把圓柱體問題也一併解決下,這個問題困擾了好幾天,因爲圓柱體本身看上去不像是一個曲面問題。

Python 繪製圓錐體(3D圖)

其實,明白幾何作圖原理的話,圓柱體並不很難。圓柱體其實是一個圓,或者說是N多個圓,每個圓對應的高度不同。這句話可能不是很好理解,但仔細想想也不是很難。
畫圓是一件很簡單的事情,x是角度的sin值,y是角度的cos值,高度劃分爲多少份,就要把圓重複多少次。代碼也不多,只有五行,代碼和結果圖如下。

# -*- coding: utf-8 -*-
#哪有什麼可以直接登頂的人生,只有根據反饋不斷迭代的過程! 

import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D

# 簡單方法畫出漂亮的圓柱體(半徑和高度均爲1)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
 
# 生成圓柱數據,底面半徑爲r,高度爲h。
# 先根據極座標方式生成數據
u = np.linspace(0,2*np.pi,50)  # 把圓分按角度爲50等分
h = np.linspace(0,1,20)        # 把高度1均分爲20份
x = np.outer(np.sin(u),np.ones(len(h)))  # x值重複20次
y = np.outer(np.cos(u),np.ones(len(h)))  # y值重複20次
z = np.outer(np.ones(len(u)),h)   # x,y 對應的高度

# Plot the surface
ax.plot_surface(x, y, z, cmap=plt.get_cmap('rainbow'))
 
plt.show()

漂亮的結果圖形如下所示!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章