分形 —— 龙曲线的构造

龙曲线的构造如果仅仅通过文字描述的话,可能会略显抽象,这里有一个可视化的视频,讲述整个龙曲线的从无到有,从简单到复杂的构造过程,【分形几何】《侏罗纪公园》原著里神奇的“龙曲线”-原创视频-爱奇艺

1. 构造过程


这里写图片描述

  • 一条很长的直线
  • (1)向左折叠一次
  • (2)再向左折叠一次

2. 程序构造:龙曲线字符串

龙曲线字符串由:X、Y、F、+、- 组成;

  • F:向前方移动一格并画线;
  • +:向左旋转 90°(向左对折)
  • -:向右旋转 90°(向右对折)
  • X、Y:忽略(用于拓展)

画出第 0 代龙曲线的字符串是 FX(可以想象为一条水平的直线),从下一代开始,按照如下(拓展)方式利用前一代字符串进行字符替换,从而获得当前一代的龙曲线字符串。

  • X ⇒ X+YF
  • Y ⇒ FX-Y

既然物理上对应着对折,因此对+/-左右的每一项都是一分为 2;

  • 第一代:FX+YF
  • 第二代:FX+YF+FX-YF

3. 程序实现

void dragonCurve(const string& seed, int N) {
    if (N == 0) {
        cout << seed;
        return;
    }
    for (int i = 0; i < seed.size(); ++i) {
        if (seed[i] == 'X')
            dragonCurve("X+YF", N-1);
        else if (seed[i] == 'Y') 
            dragonCurve("FX-Y", N-1);
        else 
            cout << seed[i];
    }
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值