分形之康托(Cantor)三分集


      1883年,德國數學家康托(G.Cantor)提出了如今廣為人知的三分康托集,或稱康托爾集。三分康托集是很容易構造的,然而,它卻顯示出許多最典型的分形特征。它是從單位區間出發,再由這個區間不斷地去掉部分子區間的過程。

      三分康托集的構造過程是:

      第一步,把閉區間[0,1]平均分為三段,去掉中間的 1/3 部分段,則只剩下兩個閉區間[0,1/3]和[2/3,1]。

      第二步,再將剩下的兩個閉區間各自平均分為三段,同樣去掉中間的區間段,這時剩下四段閉區間:[0,1/9],[2/9,1/3],[2/3,7/9]和[8/9,1]。

      第三步,重復刪除每個小區間中間的 1/3 段。如此不斷的分割下去, 最后剩下的各個小區間段就構成了三分康托集。

      其實三分Cantor集的構造本身就具有嚴格的自相似的結構,並且具有無窮小的細節,我們可以說三分Cantor集就是分形集。當時,Cantor是為了證明級數中的一些定理引進的,由於它的一些奇異的性質,被當時看作集合中的另類,從而忽視了Cantor集的重要性。如今Cantor集經常在混沌和分形的研究中遇到。既然它是分形,那么它的維數將可以采用前面講述的方法進行計算。因為它有嚴格的自相似結構,如果按比例縮小1/3,則它相當於兩個原來相似整體。

      Cantor集是一種最簡單的分形方式,無非是不停地將一條線段變成兩條小點的線段,核心代碼如下:

static void FractalCanto(const Vector3& vStart, const Vector3& vEnd, Yreal length, Yreal stepY, Vector3* pVertices) { Vector3 vSub = vEnd - vStart; pVertices[0] = vStart; pVertices[1] = vStart + vSub*length; pVertices[2] = vEnd - vSub*length; pVertices[3] = vEnd; for (Yuint i = 0; i < 4; i++) { pVertices[i].y += stepY; } }

程序中可以任意設置實線的分裂比例,而不是嚴格意義上的三等分:

可以以3D的視角觀察圖形:

軟件下載地址:http://files.cnblogs.com/WhyEngine/Fractal.7z

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM