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

2020-12-25 CDA數據分析師

作者 | Jay Alammar轉載自 | 高級農民工

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

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

八面體

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

1 安裝相關包

首先安裝兩個必備包:

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

2 定義 3D 圖生成環境

接下來定義幾個類設置好 3 維圖基礎環境:

viewport :矩形圖範圍camera:包括視圖矩陣和投影矩陣mesh:svg 矢量圖所需的網格表面矩陣、著色器和樣式字典

3 生成八面體數據

然後生成八面體每個定點的數據:

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維庫渲染上面的原始數據,最後生成 svg 矢量圖。

5 生成 svg

上面最後一步生成 svg 圖形,需要調用下面的 Engine 函數,略微有些複雜:

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

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

球體和 Klein 瓶

代碼如下:

多面球體

代碼如下:

發光的球體

代碼實現:

還可以繪製這種曲面體

代碼實現如下:

相關焦點

  • 有人說Python是青銅?我用50行Python代碼繪製3D機場分布圖
    我用50行Python代碼繪製3D機場分布圖 繪製一款的3D圖形,不僅可以直觀的展示數據分析的結果,也更方便數據化運營,同時也讓工作成果更容易被大眾理解。本文就基於python繪製一款基礎的3D地圖,用於直觀展示全國機場的分布情況,以及該機場出發的航班數量。
  • 來到新明珠 萬萬沒想到......
  • 我萬萬沒想到陽朔美食如此匱乏
    我萬萬沒想到陽朔美食如此匱乏,除了桂林米粉就是啤酒魚。我還定了四天三晚的悅榕莊…呆到後面瘋狂想回家。還好還有這家星爸爸,第一天我包車出遊外賣了燕麥拿鐵,味道非常詭異。第三天我坐酒店的shuttle bus來買了杯愛爾蘭冷萃還行能喝。這真的是枯燥農村生活的一股清流…四星感情分。
  • PROE三維圖與CAD二維工程圖的轉化
    我是一名國企的設備技術員,從事零部件的加工與設計以及圖紙繪製工作,在七年的工作中對圖紙的繪製有一些自己的心得,在這裡介紹給大家:     首先三維圖比較二維圖的優點在於直觀易懂,二維圖較為抽象,較三維圖來說理解難度較高,尤其對於沒有或者圖紙繪製知識相對較少的人員來說更是難上加難。
  • 絕地求生地圖原型曝光 萬萬沒想到竟在中國!
    原標題:絕地求生地圖原型曝光 萬萬沒想到竟在中國! 《絕地求生》自上線以來,眾多玩家就沉迷於吃雞樂此不疲。作為一款「次時代開放性沙盒動作角色扮演冒險收集養成生存策略競技3D大型網絡聯機巨作」,除了思考半天穿什麼的「絕地暖暖」,發現地圖彩蛋也成為深受部分玩家喜愛的一種深遊戲方式。
  • 萬萬沒想到!養花達人家裡一夜開出50多朵曇花!
    萬萬沒想到!養花達人家裡一夜開出50多朵曇花!雖然不是第一次見到曇花盛開,但如此大規模的綻放,讓花主人徐女士也不得不驚嘆連連,拿起手機記錄下驚豔的一幕幕。一朵朵曇花綻放在夜色之中,片片溫潤如玉的潔白花瓣層層疊疊,散發著幽淡的香氣,沁人心脾。「月下美人」的風姿,令人驚嘆和屏息。
  • 《萬萬沒想到》淪落到停拍?也真的是萬萬沒想到
    「我叫王大錘,萬萬沒想到… 」小夥伴們,還有多少人還記得這句很是經典的臺詞嗎?想當年,《萬萬沒想到》以獨特的剪輯方式,清奇的腦洞,周星馳無釐頭式的劇風獲得了大量觀眾的支持與喜愛,也算得上是網劇的鼻祖了。然而,沒想到的是,自第三季播出後,《萬萬沒想到》就停拍了。當初大火的《萬萬沒想到》卻淪落到停拍的下場,也真的是萬萬沒想到。到底萬萬沒想到為什麼解散?
  • 萬萬沒想到電影會出第二部嗎?名字是不是《萬萬沒想到還有2》?
    大家好,今天小編跟大家聊一聊之前在網上很火的網劇《萬萬沒想到》的大電影,電影是由教授易小星執導,原班人馬領銜主演打造的一部西遊題材的奇幻電影。小牛妖王大錘認為小美暗戀慕容白,所以對慕容白有些刻板偏見,他覺得慕容打敗貓妖沒什麼大不了的,自己也能做到。在前去白虎洞尋找貓妖的路途中,王大錘遇到了沒了法力的孫悟空,孫悟空從他那裡得知自己金丹在貓妖那裡,只有拿回金丹才能重新獲得法力,於是孫悟空就帶著王大錘和小美上路找貓妖(小美是擔心大錘的安危出來找他回去的)。
  • 《萬萬沒想到》經典臺詞日語翻譯
    《萬萬沒想到》以誇張而幽默的方式描繪了超級屌絲王大錘意想不到的傳奇故事。作為職場界,名醫界,相親界的著名屌絲,王大錘每天的生活都多姿多彩而又變幻莫測。本來只是一場很簡單的面試,但在王大錘看來卻變成了一個探案現場,最後的結果總會引用短片的題目《萬萬沒想到》來帶出一個意想不到的結束,涉及搞笑、穿越、職場等當下熱門元素。劇情內容包羅萬象,從當下熱門話題到經典歷史故事,調侃的視角幽默的語言獨樹一幟。一起來看看這些經典臺詞翻譯成日語會有怎樣的笑果。
  • 《萬萬沒想到》也做公仔
    《萬萬沒想到》和 Funko 合作,出了電影中王大錘、沙僧、孫悟空、孔蓮兒四個人物的模型公仔。  Funko 是一家專門為流行文化產品製作玩具的公司。這次《萬萬沒想到》是在 Funko  的 POP 系列發布的這四款公仔。
  • CAD畫三維圖怎麼渲染?一分鐘教你快速操作
    從事過CAD相關工作的都知道,CAD繪製的方式有二維平面圖以及三維圖形,三維圖形,畫三維圖方式也是比較簡單的。那當然三維圖畫完後一般還需要進行渲染操作,步驟也是比較簡潔的。下面就來給大家操作一下CAD畫三維圖進行渲染的使用方法。
  • 萬萬沒想到!壯漢在足療店搶手機,竟被赤腳美女追上
    萬萬沒想到!壯漢在足療店搶手機,竟被赤腳美女追上文章素材來源於網際網路,歡迎大家點擊關注和評論!導語:一個壯漢在足療店裡搶了一個女子的手機,然後竟然被這個女子赤腳追上了,這可真是萬萬沒有想到的「劇情」!一個壯漢竟然被赤腳美女追上了,這可真是萬萬沒有想到啊,連韋女士的朋友都不斷的稱讚她。所以不要小看了女性的體力,也許她的體力是比男人還好的!
  • 唯我獨尊的黃子韜竟有受虐傾向?沒想到 有一天被鹿牛桃的糖齁到了
    唯我獨尊的黃子韜竟有受虐傾向?沒想到 有一天被鹿牛桃的糖齁到了時間:2020-05-20 10:20   來源:今日頭條   責任編輯:沫朵 川北在線核心提示:原標題:唯我獨尊的黃子韜竟有受虐傾向?沒想到 有一天被鹿牛桃的糖齁到了 想像了無數次吳亦凡、鹿晗、黃子韜同臺的畫面,萬萬想不到畫風竟是這樣的。
  • python:繪製楓葉簡筆畫
    上面是楓葉的簡筆圖,我們怎麼用python程序來完全模擬以上的圖片呢?01今天為大家帶來用python畫楓葉的詳細過程。首先,我們保存上面的圖片為「楓葉.jpg」,放到python的目錄下。打開python編輯器(本篇使用的pycharm)函數實現導入所需的庫函數:from PIL import Imageimport turtle as t接下來,通過PIL讀取圖片的信息
  • 《萬萬沒想到》,節操不見了
    是的,網劇《萬萬沒想到》。當年它火到什麼程度?連美國《華爾街日報》都花了1/3版面,報導這部「中國視頻網站踏入自製領域的裡程碑」,還把它列入經典案例。這麼說吧,只要看過之前的《萬萬》系列,甚至是任何一部周星馳電影,所有梗你都能輕鬆猜到。深夜組隊潛入敵方深院,眾人輕功一躍……回頭總能看見跌到牆根的豬隊友。
  • 《火影忍者》配樂師高梨康治加盟《萬萬沒想到》電影
    昨日,導演叫獸易小星公布了一則重磅消息:曾為《火影忍者》等經典動漫製作配樂的知名音樂家高梨康治,將出任《萬萬沒想到》的音樂總監。消息一經曝光,立刻引發熱烈討論,二次元圈更是陷入狂歡。高梨康治一直是動漫迷心中的大神級人物,他的加盟,將令《萬萬沒想到》的視聽效果更上一層,成為賀歲檔的一大驚喜。
  • 《西涯俠》引領最熱流行詞 劇情好評「萬萬沒想到」
    ­  此次曝光的推廣曲較之之前曝光的兩首曲風,完全大相逕庭,玩出全新花樣。結合時下最熱門的「喊麥文化」,將《西涯俠》前三集劇情內容融入到歌詞當中,頗具節奏感的說唱,將李西涯的成俠之路展現得淋漓盡致,看似粗糙清奇的漫畫畫風更是「亮瞎雙眼」,魔性洗腦,令網友大呼「停不下來」。
  • 熊出沒:我們都知道光頭強很「窮」,但萬萬沒想到窮到如此地步!
    說到熊出沒,我們都會立馬想到片中許多經典的人物角色,比如光頭強、熊大熊二、趙琳、李老闆等等,今天我們要說的是熊出沒中一個非常悲慘的角色:光頭強,為什麼要說他悲慘呢?那是因為他作為一個伐木工,每天砍樹都會被熊大熊二所阻攔,導致無法按時上交木材,也沒有工資可拿。
  • 《萬萬沒想到》經典臺詞日語翻譯
    《萬萬沒想到》以誇張而幽默的方式描繪了超級屌絲王大錘意想不到的傳奇故事。作為職場界,名醫界,相親界的著名屌絲,王大錘每天的生活都多姿多彩而又變幻莫測。本來只是一場很簡單的面試,但在王大錘看來卻變成了一個探案現場,最後的結果總會引用短片的題目《萬萬沒想到》來帶出一個意想不到的結束,涉及搞笑、穿越、職場等當下熱門元素。劇情內容包羅萬象,從當下熱門話題到經典歷史故事,調侃的視角幽默的語言獨樹一幟。一起來看看這些經典臺詞翻譯成日語會有怎樣的笑果。
  • AutoCAD根據二維圖畫三維圖的思路和方法
    本教程旨在介紹由三視圖繪製三維實體圖時,整個建模過程的步驟和方法。一、分析三視圖,確定主體建模的坐標平面  在拿到一個三視圖後,首先要作的是分析零件的主體部分,或大多數形體的形狀特徵圖是在哪個視圖中。從而確定畫三維圖的第一步――選擇畫三維圖的第一個坐標面。