龍形曲線(Dragon Curve)又叫分形龍,是一種自相似碎形曲線的統稱,因形似龍的蜿蜒盤曲而得名。
一種簡單的生成分形龍的方式是:拿着一條細長的紙帶,把它朝下的一頭拿上來,與上面的一頭並到一起。用一句簡單的話說,就是將紙帶對折。接着,把對折后的紙帶再對折,又再對折,重復這樣的對折幾十次……這就生成了分形龍的圖形.
上一節講的是分形之列維(levy)曲線,它是將一條線段不停地分形成兩條長度相等且相互垂直的線段,而生成的.分形龍的生成方式與列維曲線相似,也是將線段不停地分形成兩條長度相等且相互垂直的線段,不同之處是其對折的方向是一個左一個右,而列維曲線則是始終朝着一邊對折.其核心代碼如下:
static void FractalDragon(const Vector3& vStart, const Vector3& vEnd, Vector3* pVertices, bool left) { Vector3 vSub = vEnd - vStart; pVertices[0] = vStart; pVertices[2] = vEnd; Yreal alfa = atan2f(vSub.y, vSub.x); if (left) { alfa += YD_REAL_PI/4; } else { alfa -= YD_REAL_PI/4; } Yreal l = D3DXVec3Length(&vSub)/YD_REAL_SQRT_2; pVertices[1].x = vStart.x + cosf(alfa)*l; pVertices[1].y = vStart.y + sinf(alfa)*l; pVertices[1].z = 0.0f; }


















這是個3D程序,鼠標右鍵的拖動可以改變視角.

