網頁

2011年6月22日 星期三

用 CAD 玩碎形繪製 (Fractal)

碎形幾何學是自1970s 起所新發展的新幾何學,源自數學家 Benoit Mandelbrot 的有趣問題「英國的海岸線有多長?」,從而發展出新的維度觀念:Fractal (碎形)。

藉由這新的幾何學及電腦繪圖的助力,許多傳統歐幾里德學所無法闡述的外觀上極不規則卻又存在於自然界的複雜型態,得以可有效解釋的機會。歷經30多年來的發展,碎形幾何學理論已應用於各個領域:生物、水文、經濟、管理、化學、天文等。碎形幾何與混沌理論,同為讓近代非線性理論快速進展,得以能解釋大自然許多非線性現象的複雜結構。

碎形幾何之所以吸引人的原因之一,是在於其所具有的"自我相似性"及無限結構的性質。簡言之,即一個看似複雜的結構,可能只是以某種固定的簡單方式將細節縮小尺寸,造成某種循環重現的複雜現象。

碎形幾何的許多經典方程式,均是以一個極其簡單的疊代式所構成。經由多次疊代計算的結果,將這些疊代得的空間點位龐大資料(數萬至數百萬筆點位)以電腦軟體繪製,得到一個兼具簡諧、複雜、無止境的美麗圖像(Fractal Gallery)。

那麼筆者為何要以CAD 繪製 Fractal 圖像呢?其實只是好奇心及"好玩"而已。AutoCAD Civil 3D 2011~2012 開始提供將點雲資料滙入建立為 COGO 點。而碎形圖形的點位資料則亦是一種點雲的資料形態,那麼該如何以最快的處理程序在 CAD 裏頭繪製這些點位?實做之後,發現解決方法其實很簡單:使用 SCR 腳本檔。

所測試繪製的碎形圖象的數學疊代敍述如下:
給定平面上的三個已知點 P1(X1,Y1)、P2(X2,Y2)、P3(X3,Y3),任選一個起始點 Qo(Xo,Yo)。
丟擲一個六面骰子,依正面點數值 i 決定新點位 Qn(Xn,Yn)如下:
n=1, Q1=0.5 × ( Pi + Qo)
n>1,  Qn= 0.5 × ( Pi + Q[n-1] )
其中 Pi 則依正面點數值 i 按如下規則設定
if i =1,4 then Pi=P1 
if i =2,5 then Pi=P2
if i =3,6 then Pi=P3
簡言之,即新點位係以前一點位向 Pi 點位方向移動1/2 向量,而 Pi 點位則由骰子隨機決定是三已知點中的那一點位。

應該是不難理解吧!真正的問題是:當這樣的過程歷經數萬個或數百萬個的擲骰子隨機過程之後,這些"點雲"繪得的圖像會是如何?想像的出來嗎?

將前述的數學疊代敍述以試算表軟體 (LibreOffice或OpenOffice.org的 Calculator、MS-Office Excel)計算建立這些點位資料後,將其滙出或另貼附為內容為 X,Y 欄位格式的 txt 文件檔,再於第一行插入 point m 的內容(如下示意)後,另存為 SCR 檔。然後將這個 *.scr 的檔案於 CAD 環境中開啟即可完成繪製工作,就算有十幾萬筆的點位資料也不用害怕。
multiple point (若是使用 Bricscad 則本行輸入可再簡化為 point m)
1060,900
530,450
265,225
382.5,545.5
191.25,272.75
95.625,136.375
47.8125,68.1875
523.90625,34.09375
....
 
筆者以 P1(0,0)、P2(1000,0)、P3(500,866) 及起始點 Po(1060,900) 為條件經20,000次疊代計算得的點位資料繪製結果如下圖所示。到訪的朋友,是否很出乎原本的意料之外呀!所構成的圖像竟存在許多的"空白區",局部縮放後又呈現自我相似性的特質。當點位資料多達200,000點以上,縮放後的自我相似性質會更顯著。
以上所呈現的是一個二維碎形圖象的疊代及繪製結果,同樣的程序也可以延伸至三維碎形圖象:已知四個點位 PI(XI,YI) I=1~4 及起始點位 Qo(Xo,Yo),隨機過程則改以亂數函數生成 i=1~4,新點位同樣以前一點位向 Pi 點位方向移動1/2 向量而成。筆者以補充增加設定第四個已知點位資料 P4(500,289,750),再經經30,000次的疊代結果產生的點位資料繪製如下,筆者特以立體圖像的方式呈現,朋友可自行放大以交錯法(或直接以遠視法)觀看即可見其立體構造。若將疊代次數為300,000以上的結果依法繪製,其立體的結構經縮放操後會更顯著。
有好奇心的朋友,請自行動手建立這些"點雲"資料,再以能讀取腳本檔案格式 SCR的 CAD 軟體 (BricsCAD、IntelliCAD、AutoCAD均可)開啟後,自行縮放檢視及3D環轉視一番,這可是一個很有趣的經驗。

相關連結: 

沒有留言: