日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

萬萬沒想到,Python 竟能繪制出如此酷炫的三維圖

 CDA數(shù)據(jù)分析師 2019-07-18
作者 | Jay Alammar
轉載自 | 高級農(nóng)民工
原文 | Python 竟能繪制出如此酷炫的三維圖

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

這些圖怎么做出來呢?今天就來分享下如何一步步繪制出三維矢量(SVG)圖。

八面體

我們先以下面這個八面體為例。

1 安裝相關包

首先安裝兩個必備包:

import pyrr # NumPy 的 3D 函數(shù)庫
import svgwrite # svg圖形處理庫

2 定義 3D 圖生成環(huán)境

接下來定義幾個類設置好 3 維圖基礎環(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ù),略微有些復雜:

以上代碼全部封裝到類中調(diào)用,就可以生成八面體圖形了。

除了八面體還可以生成很多其他圖形。

球體和 Klein 瓶

代碼如下:

多面球體

代碼如下:

發(fā)光的球體

代碼實現(xiàn):

還可以繪制這種曲面體

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

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多