分形之龙形曲线(Dragon Curve)
? ? ??龍形曲線(Dragon Curve)又叫分形龍,是一種自相似碎形曲線的統(tǒng)稱,因形似龍的蜿蜒盤曲而得名。
? ? ? 一種簡(jiǎn)單的生成分形龍的方式是:拿著一條細(xì)長(zhǎng)的紙帶,把它朝下的一頭拿上來,與上面的一頭并到一起。用一句簡(jiǎn)單的話說,就是將紙帶對(duì)折。接著,把對(duì)折后的紙帶再對(duì)折,又再對(duì)折,重復(fù)這樣的對(duì)折幾十次……這就生成了分形龍的圖形.
?
? ? ? 上一節(jié)講的是分形之列維(levy)曲線,它是將一條線段不停地分形成兩條長(zhǎng)度相等且相互垂直的線段,而生成的.分形龍的生成方式與列維曲線相似,也是將線段不停地分形成兩條長(zhǎng)度相等且相互垂直的線段,不同之處是其對(duì)折的方向是一個(gè)左一個(gè)右,而列維曲線則是始終朝著一邊對(duì)折.其核心代碼如下:
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; }
?
這是個(gè)3D程序,鼠標(biāo)右鍵的拖動(dòng)可以改變視角.
參考:http://blog.sciencenet.cn/blog-677221-601957.html
軟件下載地址:http://files.cnblogs.com/WhyEngine/Fractal.7z
轉(zhuǎn)載于:https://www.cnblogs.com/WhyEngine/p/4013245.html
總結(jié)
以上是生活随笔為你收集整理的分形之龙形曲线(Dragon Curve)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python时间转换
- 下一篇: Dev 等待提示 WaitDialogF