分形理論是當今世界十分風靡和活躍的新理論、新學科。分形的概念是美籍數學家曼德布羅特(B.B.Mandelbort)首先提出的。1967年他在美國權威的《科學》雜志上發表了題為《英國的海岸線有多長?》的著名論文。海岸線作為曲線,其特征是極不規則、極不光滑的,呈現極其蜿蜒復雜的變化。我們不能從形狀和結構上區分這部分海岸與那部分海岸有什么本質的不同,這種幾乎同樣程度的不規則性和復雜性,說明海岸線在形貌上是自相似的,也就是局部形態和整體形態的相似。在沒有建築物或其他東西作為參照物時,在空中拍攝的100公里長的海岸線與放大了的10公里長海岸線的兩張照片,看上去會十分相似。事實上,具有自相似性的形態廣泛存在於自然界中,如:連綿的山川、飄浮的雲朵、岩石的斷裂口、布朗粒子運動的軌跡、樹冠、花菜、大腦皮層……曼德布羅特把這些部分與整體以某種方式相似的形體稱為分形(fractal)。1975年,他創立了分形幾何學(fractalgeometry)。在此基礎上,形成了研究分形性質及其應用的科學,稱為分形理論(fractaltheory)。
在這一節中,將展示一個海岸線的分形圖形。
核心代碼:
static void FractalTriangle(const Vector3& vStart, const Vector3& vEnd, Yreal angle, Vector3* pVertices) { Vector3 vSub = vEnd - vStart; Yreal len = D3DXVec3Length(&vSub); pVertices[0] = vStart; pVertices[5] = vEnd; Yreal alfa = atan2f(vSub.y, vSub.x); pVertices[1] = vStart + vSub*0.25f; pVertices[4] = vStart + vSub*0.75f; Yreal a0 = alfa + angle; Yreal l = len/8.0f/cosf(angle); pVertices[2].x = pVertices[1].x + cosf(a0)*l; pVertices[2].y = pVertices[1].y + sinf(a0)*l; pVertices[2].z = 0.0f; pVertices[3].x = pVertices[4].x - cosf(a0)*l; pVertices[3].y = pVertices[4].y - sinf(a0)*l; pVertices[3].z = 0.0f; }
軟件截圖: