
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3 算法
我们可以用一个列表gene来指定生成元,例如科赫曲线的生成元可以用列表gene=[0,60,-120,60,'END']来表示,如图2-10所示。

图2-10 用列表指定生成元
列表中的数值表示旋转角的大小,正数表示逆时针旋转,负数表示顺时针旋转。A点不旋转,为0;C点逆时针旋转60°,值为60;D点顺时针旋转120°,值为-120;E 点逆时针旋转60°,值为60;END 表示该生成元结束,程序读到这个值后,不会再继续读取数据。线段AC、CD、DE、EB的长度是相同的,都为AB的1/3。
除生成元外,我们还需要一个缩小率ratio,指的是下一次迭代的线段和原始线段的比率,也就是AC/AB。在科赫曲线中这个比率是1/3,约为0.3333。
生成元1的生成元可用列表[-15,90,-150,90,'END']来表示,如图2-11所示。

图2-11 生成元1
列表中的数值表示旋转角的大小,正数表示逆时针旋转,负数表示顺时针旋转。A点顺时针旋转15°,值为-15;C点逆时针旋转90°,值为90;D点顺时针旋转150°,值为-150;E点逆时针旋转90°,值为90;END表示终止指定生成元。线段AC、CD、DE、EB的长度是相同的。
生成元1的缩小率ratio(下一次迭代的线段和原始线段的比率),也就是AC/AB,计算可得:

生成元2的生成元可用列表[0,90,-90,-90,90,-90,90,90,-90,'END']来表示,如图2-12所示。

图2-12 生成元2
列表中的数值表示旋转角的大小,正数表示逆时针旋转,负数表示顺时针旋转。生成元2 的缩小率为:
ratio=1/5=0.2
几种曲线的生成元和缩小率如表2-1所示。
表2-1 几种曲线的生成元和缩小率
