魚羊 發自 凹非寺

量子位 報道 | 公衆號 QbitAI

畫數學插圖令人頭禿?

現在,CMU的研究人員們開發出了一款實用工具Penrose:

以純文本的方式輸入,根據語言描述,就能自動生成數學圖表。

集合論:

幾何:

線性代數:

光線追蹤:

都不在話下。

整個過程,不需要手動進行繁瑣調整,只需在軟件中用編程語言的方式,描述數學表達式。

並且,這些表達式不僅限於基本功能,而是可以表達任何數學領域的複雜關係。

這一研究成果,入選計算機圖形學頂會SIGGRAPH 2020。

在GitHub上,也得到了3500標星,登上熱榜。

有網友認爲:Penrose,就像是科學圖表中LaTeX。

純文本繪製數學圖表

用LaTeX編輯數學公式的快樂,誰用誰知道。

那麼Penrose具體是怎麼繪製出數學圖表的呢?

比如,要畫出這樣一個集合關係:

在軟件界面中,完成這樣的輸入就能自動生成:

如果對配色、佈局不滿意,點擊「resample」,系統會提供其他不同的選擇:

也可以自己手動在「sty」文件中進行調整:

研究人員還提到,該系統支持與基於Web的應用程序集成。並且,Penrose IDE能夠提供自動語法高亮和自動補全功能。

不過,目前Penrose尚處在初期版本,未向公衆開放。研發團隊表示,他們正在快馬加鞭,希望能儘快上線公開版本。

數學符號如何變成精美圖表?

作者之一、CMU計算機科學和機器人學助理教授Keenan Crane表示,他們打造Penrose的目的,是讓所有人都能擁有數學家一般,繪製漂亮圖表的能力。

爲了實現這一目標,Penrose圍繞兩個設計原則來實現:

通過從數學符號到視覺圖標的映射來規定圖表;

通過求解相關有約束的優化問題來合成圖表。

第一步,是用編程語言來規定數學對象及其可視化表示。

具體而言分爲三個部分:

Substance:類似於HTML,用來指定內容。

Style:類似於CSS,用於調整外觀和可視化表示。

Domain:聲明數學領域中可用的對象、關係和符號。

需要說明的是,這並不意味着用戶想要上手Penrose,必須學會三種語言。

實際上,大多數用戶只要掌握Substance語言,類似這樣:

Set A,B

intersecting(A,B)

set C := intersection(A,B)

Label A $\text$

Label B $\text$

Label C $\text$

Domain和Style就交給專業人士,要用的時候調用軟件包就行了。

第二步,使用約束性優化來合成滿足給定規範的圖。

該方法主要受到手繪圖的啓發。

3500星,登上GitHub熱榜

Penrose展現的效果,得到了網友們的點贊。

目前,Penrose的GitHub已經有3500標星,在Hacker News上也有399的熱度。

有網友認爲,想要理解數學概念,可視化是非常重要的手段,而Penrose可能會給數學教育帶來很大的幫助。

還有網友表示,希望幾何繪圖軟件Geogebra能集成這一功能。

不過,也有網友指出,簡單的示例說明了系統的思想,但還是希望看到Penrose實現的更爲複雜的數學概念可視化,以證明其確實可以表達數學領域的複雜關係。

相關文章