上一篇文章講的是分形之樹(Tree),這一篇中將其簡化一下,來展示二叉分形樹的生長過程。
核心代碼:
static void FractalBinaryTree(const Vector3& vStart, const Vector3& vEnd, Yreal angle, Yreal branch_c, Vector3* pVertices) { Vector3 vSub = vEnd - vStart; Yreal len = D3DXVec3Length(&vSub); Yreal alfa = atan2f(vSub.y, vSub.x); Yreal branch = len*branch_c; pVertices[0] = vEnd; pVertices[1].x = pVertices[0].x + branch*cosf(alfa - angle); pVertices[1].y = pVertices[0].y + branch*sinf(alfa - angle); pVertices[1].z = 0.0f; pVertices[2] = vEnd; pVertices[3].x = pVertices[2].x + branch*cosf(alfa + angle); pVertices[3].y = pVertices[2].y + branch*sinf(alfa + angle); pVertices[3].z = 0.0f; }
軟件截圖:











最后的圖形很像一棵花菜吧。
二叉樹有兩個控制參數,分叉的角度與子樹的長度。通過調節這兩個參數,可以得到不同的圖形:



最后這個圖形與列維(levy)曲線很像
