返回列表 回复 发帖
练习3. 带对称左右生成元格式的L分形的制作方法
    前面通过对五角繁星的制作,我们介绍了简单进退格式的L-分形的制作方法。那么什么叫“进退格式”呢?按作画板L分形的经验,所谓进退,就是将生成元A-B按如图箭头的指向从A依次向前压缩(迭代)到生成元的各线段上,其中由B''到B'''后又后退到B'',再继续向前直到B,若保留虚线箭头B''到B'''的迭代,最后得到的是柳烟老师的专贴《看分形书,用画板作分形画小系列》1#的分形Durer五边形,而去掉B''到B'''的迭代即得五角繁星。
                     
图片4.jpg
2010-11-27 16:27

      L-分形中存在许多带左右格式的生成元的分形,如龙曲线、Hilbert曲线、线型Sierpinski三角等。下面借助线型Sierpinski三角的练习,介绍带对称左右格式生成元的L分形的迭代方法:
一、作初始元和生成元A-B:
    如图,作两点A、B,以A为中心旋转B得B'(此点也可任取),分别以A、B为中心,0.5为比缩放B'得B''、B''',隐藏B',顺次连接AB''B'''B,得初始元和左生成元(画板作L分形,对称右生成元效果可通过逆向压缩左生成元得到,所以可省去不作);
                     
图片5.jpg
2010-11-27 16:27

二、生成元上执行一次迭代:
      新建参数n,以n为度在AB''上逆向压缩左生成元(即A→B'',B→A),在B''B'''上压缩左生成元(即A→B'', B→B'''),再在B'''B上逆向压缩左生成元;
三、隐藏初始元和各点,增大迭代次数n,得线型L-Sierpinski三角。
     说明:由于分形集实际是n→∞时的极限集(即不动点),所以只与初始元和生成元的格式(代码)有关,而与生成元是点型、线型、多边形型、圆型等几何形式无关(将下面文件中n增大看看),由此我们可以把生成元用三角形或圆等图形来表现,赋以斑斓的色彩。如前例,我的生成元分别用了线型和多边形内部,而xuefeiyang老师用了正五边形,正是用了多边形内部,第二个图才群星闪烁起来。

L-Sierpinski三角.gsp (10.31 KB)

20# 柳烟
谢谢柳老师。你制作时长这么久的视频文件怎么这样小,如何设置的?
24# 柳烟
谢谢解答。
练习4. 分枝结构的进退格式L分形的制作方法
    L-system对植物结构的绘制,是L分形中最令人感兴趣的部分。前两种压缩形式是从一个起点到一个终点止的,而要模拟植物形态,就要有一个起点多个终点。所以L-system作为一种计算机符号指令系统,必须有一个指令符号,在画完一个分枝后,使计算机退回到主干再进入另一个分枝继续画图。而画板采样“人脑+电脑”的方法,这个转向过程却是轻而易举的事。下面以分形树的制作来介绍这一格式L-分形的制作方法:
一、作初始元、生成元:
    作竖直线段AB,以A为中心,按比0.618缩放B为C,按向量CB平移B为D;以C为中心,按角度36°旋转B为B', 以B为中心,按角度-36°旋转D为D',得初始元、生成元A-B如图
           
图片6.jpg
2010-11-27 23:41
               
图片7.jpg
2010-11-27 23:38

                       生成元A-B                                       分形树
二、将生成元A-B分别在A-C、C-B'、C-B、B-D、B-D'以参数n为深度执行一次迭代(最终迭代),隐藏生成元,增大参数n,得分形树。

L-分形树.gsp (3.77 KB)

几个L-分形树比较.gsp (7.45 KB)

前面用L-系统模拟植物形态还属于线性分形,所做的是保角的仿射变换,没能得到生动逼真的图形。要模拟出栩栩如生的植物形态,就要引入随机L-system或用迭代函数系统(IFS)。而随机L-system的画板实现,我们还没有找到有效的方法,也是我们努力的方向。下一个练习,就从IFS-Sierpinski三角开始。
练习5. 二维IFS分形确定性算法的画板实现
     迭代函数系统(IFS)的理论与实践在分形几何中占有十分重要的地位。二维IFS分形实际就是复平面上的点集,在一组压缩仿射变换之下的像经反复迭代而产生的分形。
     下面以IFS-Sierpinski三角为例,介绍其原理和制作方法。
               
图片8.jpg
2010-11-29 14:15

        如图,Sierpinski三角由以下三个仿射变换确定:
    W1.:(x,y)→(0.5x,0.5y),                   (一次变换效果:△ABC→△ADF)
    W2.:(x,y)→(0.5x+0.5,0.5y)                (一次变换效果:△ABC→△DBE)
    W3.:(x,y)→(0.5x,0.5y+0.5)                (一次变换效果:△ABC→△FEC)
我们把系统{ W1 ,W2,W3}叫做一个迭代函数系统,将给定点集(复平面)反复施加这组仿射变换(迭代)就形成Sierpinski三角。具体作法如下:
一、构建三个仿射变换
     任作一点z,度量其横、纵坐标x、y,计算0.5x、0.5y、0.5x+0.5、0.5y+0.5,作点A(0.5x,0.5y)、B(0.5x+0.5,0.5y)、C(0.5x,0.5y+0.5);
二、迭代成ISF分形
    新建参数n,作z→A、z→B、z→C,深度为n的迭代(显示为“最终迭代”),增大n,得ISF-Sierpinski三角。

    下一个练习介绍几个常见的确定性IFS作法。

IFS-Sierpinski三角.gsp (4.56 KB)

31# 柳烟
互相学习,共同提高。
练习6. 二维IFS分形确定性算法的画板实现(续1)
      现在来练习L-龙曲线和IFS-龙曲线的画板实现。如图
                 
图片8.jpg
2010-12-1 00:06

一、龙曲线的生成原理:
    龙曲线由两个仿射变换确定:
    W1:(x,y)→ (0.5x-0.5y,0.5x+0.5y), 即将左生成元ACB压缩到原来的2^0.5后再逆时针旋转45°,得折线AEC;
    W2:(x,y)→ (-0.5x-0.5y+1,0.5x-0.5y), 即将左生成元ACB压缩到原来的2^0.5,再逆时针旋转135°,最后右移1单位得折线BFC。
二、L-龙曲线的制作方法:
   1.作生成元A-B:A、B为独立点,∠ACB=90°如上图所示,隐藏点C;
   2.作{A,B}→{ A,C},{A,B}→{ B,C},深度为n的迭代,显示为最终迭代,得L-龙曲线。
三、IFS-龙曲线的制作方法:
   1.作点z,度量其坐标,作点w1(0.5x-0.5y,0.5x+0.5y),w2 (-0.5x-0.5y+1,0.5x-0.5y);
   2.作z→w1,z→w2,深度为n的迭代显示为最终迭代,得IFS-龙曲线。

龙曲线.gsp (8.01 KB)

36# 榕坚
要把IFS用逃逸时间算法扫描出来,需要求出IFS的漂移动力系统,理论上是可行的,实际做起来困难,xuefeiyang老师在这方面做过努力,看来没能彻底解决。
练习7. 二维IFS分形确定性算法的画板实现(续2)
                           
图片10.jpg
2010-12-1 23:50

                  
图片13.jpg
2010-12-2 13:16
               
上图所示分形叫花篮簇,它由5个仿射变换确定:
      W1:(x,y)→ (0.5x-0.134y, 0.134x+0.5y),即A-B→A-C
      W2:(x,y)→ (0.5x+0.134y+0.5, -0.134x+0.5y+0.134),即A-B→C-B
      W3:(x,y)→ (-0.1667x-0y+0.583, 0x-0.1667y+0.134),即A-B→C'-C''
      W4:(x,y)→ (0.083x-0.229y+0.417,0.229x+0.083y+0.134),即A-B→C''-D
      W5:(x,y)→ (0.083x+0.229y+0.5,-0.229x+0.083y+0.359),即A-B→D-C'
                           
图片11.jpg
2010-12-1 23:50

一、L-花篮簇的制作方法:
   1.作生成元:如下图,作线段AB,以B为中心将A沿顺时针方向旋转15°得A',作线段AB的中垂线交A'B于C,以B为中心按比1/12缩放将A为A'',按向量A''B平移C为C',按向量BA''平移C为C'',以C'为中心将C''沿顺时针方向旋转75°得C''',射线C' C'''交AB的中垂线于D,将图形整理成如上图生成元。
                        
图片12.jpg
2010-12-1 23:50

    3.作深度为n的最终迭代:A-B→A-C、A-B→C''-D、A-B→D-C'、A-B→C-B、A-B→C'-C'',增大n值得L-花篮簇。
二、IFS-花篮簇的制作方法:
    1.作五点:w1 (0.5x-0.134y, 0.134x+0.5y)、
                    w2 (0.5x+0.134y+0.5, -0.134x+0.5y+0.134)、
                    w3 (-0.1667x-0y+0.583, 0x-0.1667y+0.134)、
                    w4 (0.083x-0.229y+0.417,0.229x+0.083y+0.134)、
                    w5 (0.083x+0.229y+0.5,-0.229x+0.083y+0.359)
     2.作z→w1、z→w2、z→w3、z→w4、z→w5深度为n的迭代显示为最终迭代,得IFS-花篮簇。


    往后将开始IFS编码和随机IFS的练习了。

花篮簇.gsp (21.03 KB)

返回列表