用Wolfram語言構建三維勾股樹
瀏覽:3065
我國古代把直角三角形稱為勾股形,直角邊中較小者為勾,另一長直角邊為股,斜邊為弦,所以把這個定理稱為勾股定理。在西方,最早提出并證明此定理的為公元前6世紀古希臘的畢達哥拉斯學派,因而西方人都習慣地稱這個定理為畢達哥拉斯定理。
勾股樹,又稱為畢達哥拉斯樹。它是由古希臘數學家畢達哥拉斯根據勾股定理畫出的一個可以無限重復的圖形,因為重復多次以后的形狀像一棵樹,因此得名。這種圖形也被稱為分形圖。
勾股定理:在平面上的一個直角三角形中,兩個直角邊邊長的平方加起來等于斜邊長的平方。
以上圖為基礎,讓兩個較小的正方形按勾股定理繼續“生長”,又能畫出新一的勾股圖,如此一直畫下去,最終得到一棵完全由勾股定理圖組成的樹狀圖形,因此稱之為勾股樹。
上圖展示的是一棵勾股樹的前幾次生長過程,迭代20次之后的圖形如下圖所示:
通過改變勾股圖中直角三角形的兩個銳角的大小,可以構造出不同形狀的勾股樹。
在Mathematica軟件里構造勾股樹很簡單,方法也有多種,下面就是一種實現,通過平移旋轉縮放然后重復迭代。
那么有沒有三維的勾股樹呢,一個自然的想法是把正方形都換成正方體,開始嘗試在二維的基礎上用RegionProduct函數拓展一個維度,后來發現直接對原始的正方體進行變換也不麻煩嘛,和二維的情況差不多。
上面的代碼速度有些慢,迭代15次生成數據點耗時大約60s(CPU i7-9750H),我們使用Wolfram語言中的Compile和Listable屬性進行加速:
代碼優化之后,迭代15次只需0.03秒,比原來提速2000倍。迭代20次生成數據點也不到一秒,但此時的瓶頸是畫圖速度了。
隨著迭代次數的增加,圖形的變化:
如果把初始的正方體改成圓柱,看起來是不是更像樹了?
你喜歡哪種配色?
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
1




















