随笔 - 373  文章 - 1  评论 - 771  阅读 - 137万

分形之龙形曲线(Dragon Curve)

      龙形曲线(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程序,鼠标右键的拖动可以改变视角.

参考:http://blog.sciencenet.cn/blog-677221-601957.html

软件下载地址:https://files.cnblogs.com/WhyEngine/Fractal.7z

posted on   叶飞影  阅读(15826)  评论(4编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示