Python 繪制酷炫的三維圖步驟詳解
通常我們用 Python 繪制的都是二維平面圖,但有時也需要繪制三維場景圖,比如像下面這樣的:

這些圖怎么做出來呢?今天就來分享下如何一步步繪制出三維矢量(SVG)圖。
八面體
我們先以下面這個八面體為例。

1 安裝相關(guān)包
首先安裝兩個必備包:
import pyrr # NumPy 的 3D 函數(shù)庫 import svgwrite # svg圖形處理庫
2 定義 3D 圖生成環(huán)境
接下來定義幾個類設(shè)置好 3 維圖基礎(chǔ)環(huán)境:

viewport :矩形圖范圍
camera:包括視圖矩陣和投影矩陣
mesh:svg 矢量圖所需的網(wǎng)格表面矩陣、著色器和樣式字典
3 生成八面體數(shù)據(jù)
然后生成八面體每個定點的數(shù)據(jù):
def octahedron(): """Construct an eight-sided polyhedron""" f = sqrt(2.0) / 2.0 verts = numpy.float32([ ( 0, -1, 0), (-f, 0, f), ( f, 0, f), ( f, 0, -f), (-f, 0, -f), ( 0, 1, 0) ]) triangles = numpy.int32([ (0, 2, 1), (0, 3, 2), (0, 4, 3), (0, 1, 4), (5, 1, 2), (5, 2, 3), (5, 3, 4), (5, 4, 1) ]) return verts[triangles]
4 pyrr 包渲染
接下來利用 pyrr 3維庫渲染上面的原始數(shù)據(jù),最后生成 svg 矢量圖。

5 生成 svg
上面最后一步生成 svg 圖形,需要調(diào)用下面的 Engine 函數(shù),略微有些復(fù)雜:

以上代碼全部封裝到類中調(diào)用,就可以生成八面體圖形。
除了八面體還可以生成很多其他圖形。
球體和 Klein 瓶

代碼如下:

多面球體

代碼如下:

發(fā)光的球體

代碼實現(xiàn):

還可以繪制這種曲面體

代碼實現(xiàn)如下:

總結(jié)
以上所述是小編給大家介紹的Python 繪制酷炫的三維圖,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Django之Mode的外鍵自關(guān)聯(lián)和引用未定義的Model方法
今天小編就為大家分享一篇Django之Mode的外鍵自關(guān)聯(lián)和引用未定義的Model方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
用Python實現(xiàn)2024年春晚劉謙魔術(shù)
昨晚春晚上劉謙的兩個魔術(shù)表演都非常精彩,忍不住用編程去模擬一下這個過程,所以本文給大家用Python實現(xiàn)2024年春晚劉謙魔術(shù),文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下2024-02-02
詳解Python如何檢查一個數(shù)字是否為科技數(shù)
科技數(shù)(Tech?Number)是一種在數(shù)學上具有一定特殊性質(zhì)的數(shù)字,這篇文章主要為大家詳細介紹了如何使用Python檢查一個數(shù)字是否為科技數(shù),感興趣的可以了解下2024-03-03
實現(xiàn)Python圖形界面框架TkInter寫GUI界面應(yīng)用簡介過程操作
TkInter是Python用于開發(fā)GUI界面的標準庫,如果你想快速開發(fā)一個帶有GUI界面的小工具(笑小程序),且又能同時在Linux、Windows、Mac上使用,TkInter天生支持跨平臺,天生具備穩(wěn)定性,我認為它能滿足內(nèi)部工具的簡單需求2021-09-09

