分形之二叉樹(Binary Tree)


上一篇文章講的是分形之樹(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)曲線很像

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


免責聲明!

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



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