zoukankan      html  css  js  c++  java
  • 分形 —— 龙曲线的构造

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

    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];
        }
    }
  • 相关阅读:
    contes配置nginx教程
    jquery 图片放大镜,草稿版
    VUE学习第四次
    VUE学习 第三次
    ryu
    ovs & ryu & mininet
    centos安装mininet 和卸载
    端口镜像
    数据中心网络监控小结
    5、Kafka生产过程分析
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423308.html
Copyright © 2011-2022 走看看