用Python代碼來(lái)繪制彭羅斯點(diǎn)陣的教程
這里是顯示彭羅斯點(diǎn)陣的Python的腳本。是的,這是可以運(yùn)行的有效Phython代碼。
譯注:彭羅斯點(diǎn)陣,物理學(xué)術(shù)語(yǔ)。上世紀(jì)70年代英國(guó)數(shù)學(xué)家彭羅斯第一次提出了這個(gè)概念,稱為彭羅斯點(diǎn)陣(Pen-rose tiles)。
_ =\ """if! 1:"e,V=100 0,(0j-1)**-.2; v,S=.5/ V.real, [(0,0,4 *e,4*e* V)];w=1 -v"def! E(T,A, B,C):P ,Q,R=B*w+ A*v,B*w+C *v,A*w+B*v;retur n[(1,Q,C,A),(1,P ,Q,B),(0,Q,P,A)]*T+[(0,C ,R,B),(1,R,C,A)]*(1-T)"f or!i!in!_[:11]:S =sum([E (*x)for !x!in!S],[])"imp ort!cair o!as!O; s=O.Ima geSurfac e(1,e,e) ;c=O.Con text(s); M,L,G=c. move_to ,c.line_to,c.s et_sour ce_rgb a"def!z(f,a) :f(-a. imag,a. real-e-e)"for!T,A,B,C!in[i !for!i! in!S!if!i[""";exec(reduce(lambda x,i:x.replace(chr (i),"\n "[34-i:]), range( 35),_+"""0]]:z(M,A );z(L,B);z (L,C); c.close_pa th()"G (.4,.3 ,1);c. paint( );G(.7 ,.7,1) ;c.fil l()"fo r!i!in !range (9):"! g=1-i/ 8;d=i/ 4*g;G(d,d,d, 1-g*.8 )"!def !y(f,a):z(f,a+(1+2j)*( 1j**(i /2.))*g)"!for!T,A,B,C!in!S:y(M,C);y(L,A);y(M ,A);y(L,B)"!c.st roke()"s.write_t o_png('pen rose.png') """ ))
當(dāng)這個(gè)程序運(yùn)行時(shí),它輸出了一個(gè)1000×1000的圖像文件,包含大約2212個(gè)由3D立體效應(yīng)渲染的彭羅斯點(diǎn)陣。這里是該圖像的一部分(點(diǎn)擊放大)。
運(yùn)行該腳本需要Pycairo。它只在Python它是標(biāo)準(zhǔn)的Python腳本,但我努力想把它變得更簡(jiǎn)潔,于是我又從中刪減了一些。
編注:Pycairo是一組Python版本的Cario圖形庫(kù)。
彭羅斯點(diǎn)陣很酷,因?yàn)樗鼈兎侵芷谛缘馗采w了整個(gè)平面——圖片的轉(zhuǎn)換副本與原型從來(lái)不會(huì)一致。它們是由Roger Penrose先生通過(guò)將五邊形的平面平鋪在一起的一系列嘗試而發(fā)明的。
與C或Perl相比,Python并不是讓人迷惑的編程語(yǔ)言。這種比較似乎也從未發(fā)生,而且在網(wǎng)上也沒(méi)有多少讓人費(fèi)解的Python的例子:你可以在官方的Python常見(jiàn)問(wèn)題中或各種網(wǎng)頁(yè)如這里和這里找到一些例子。在2011年的PyCon對(duì)此還有專題討論。
我相信輸出一個(gè)高分辨率的圖像是第一個(gè)讓人費(fèi)解的Python程序。如果你知道其它的例子,可以在評(píng)論中告訴我。
- python使用matplotlib繪制折線圖教程
- 使用Python繪制圖表大全總結(jié)
- 使用python繪制常用的圖表
- python繪圖方法實(shí)例入門
- 利用Python繪制數(shù)據(jù)的瀑布圖的教程
- 利用Python繪制MySQL數(shù)據(jù)圖實(shí)現(xiàn)數(shù)據(jù)可視化
- 使用Python標(biāo)準(zhǔn)庫(kù)中的wave模塊繪制樂(lè)譜的簡(jiǎn)單教程
- python海龜繪圖實(shí)例教程
- 使用python繪制人人網(wǎng)好友關(guān)系圖示例
- Python使用pylab庫(kù)實(shí)現(xiàn)畫線功能的方法詳解
相關(guān)文章
Python Selenium Cookie 繞過(guò)驗(yàn)證碼實(shí)現(xiàn)登錄示例代碼
這篇文章主要介紹了Python Selenium Cookie 繞過(guò)驗(yàn)證碼實(shí)現(xiàn)登錄示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04使用Python串口實(shí)時(shí)顯示數(shù)據(jù)并繪圖的例子
今天小編就為大家分享一篇使用Python串口實(shí)時(shí)顯示數(shù)據(jù)并繪圖的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12python使用selenium操作瀏覽器的實(shí)現(xiàn)示例
Selenium是一個(gè)模擬瀏覽器瀏覽網(wǎng)頁(yè)的工具,主要用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具,本文主要介紹了python使用selenium操作瀏覽器的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01利用python操作SQLite數(shù)據(jù)庫(kù)及文件操作詳解
這篇文章主要給大家介紹了關(guān)于利用python操作SQLite數(shù)據(jù)庫(kù)及文件操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09用Python調(diào)用win命令行提高工作效率的實(shí)例
今天小編就為大家分享一篇用Python調(diào)用win命令行提高工作效率的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08淺談keras中的后端backend及其相關(guān)函數(shù)(K.prod,K.cast)
這篇文章主要介紹了淺談keras中的后端backend及其相關(guān)函數(shù)(K.prod,K.cast),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python中pandas.DataFrame排除特定行方法示例
這篇文章主要給大家介紹了關(guān)于python中pandas.DataFrame排除特定行的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03