Sierpinski三角形分形图及其推广
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 1 混沌游戏
图 2 Sierp inski垫片
实际上, 混沌游戏 所产生的 S ierp insk i三角形是一个规则分形图形。它是由波兰数学家 W aclaw S ier pinsk i于 1916年提出的: 取一等边三角形, 连接各边中点, 从而将原三角形分成四个小三角形, 然后挖去中 间的一个小三角形, 如图 3所示。将剩下的三个小三角形按上面同样的方法继续分割, 并舍弃位于中间的那 个三角形 !, 不断重复分割与舍弃的过程, 就能得到 Sierpinski三角形。
公式为:
ax + ( xn - ax )* div,
ay + ( yn - ay )* d iv,
xn+1 = bx + ( xn - bx )* d iv, . yn+ 1 = by + ( yn - by )* d iv,
( 3)
cx + ( xn - cx )* d iv,
cy + ( yn - cy )* div,
! !! !
将以上通过随机性迭代得到的 { ( x1, y1 ) , ( x2, y2 ) , !! }绘制在屏幕上, 经过足够多的迭代后, 最后会得 到 Sierpinski三角形分形图案。程序略。
3 S ierp insk i垫片的随机性迭代算法的推广
分析 S ierpinski三角形的随机性迭代公式, 我们发现 A0 ( ax, ay ) 、B0 ( bx, by )、C0 ( cx, cy )确定等边三角形, 如果任意取三个点, 就会得到任意的三角形。同样用迭代公式 ( 1) , 将得到一个任意三角形的分形图。
If Button= 1 T hen
n= n + 1
n记录画过的顶点数
R eD im P reserve Po intX ( n)
R eD im P reserve Po intY ( n) Po intX ( n) = x: Po intY ( n) = y P icture1. PSet ( x, y), &H C000& End If End Sub
ax + ( xn - ax ) /2,
ay + ( yn - ay ) /2,
xn+1 = bx + ( xn - bx ) / 2, . yn+ 1 = by + ( yn - by ) / 2, .
( 1)
cx + ( xn - cx ) /2,
cy + ( yn - cy ) /2,
! !!!
( 5, 6)三点, 当随机产生的点是 A, 则 A1 ( x1, y1 )取 A 0 和 B连线的中点, 若随机产生的点是 B, 则 B1 ( x1, y1 ) 取 B1 和 B连线的中点, 依次类推, 设第 n次迭代的点为 ( xn, yn ), 则第 n+ 1次迭代的点为 ( xn + 1, yn+ 1 ), 其关系为:
1 混沌游戏 与 Sierp in sk i三角形
混沌游戏 是将正三角形的三点顶点分别标记为: A ( 1, 2), B ( 3, 4) , C ( 5, 6) 。向正三角形内部投掷骰 子 ( 各面的数字是 1- 6), 如果掷出来的数字是 1, 2, 就向点 A 移动一半的距离, 标出一个新的点; 如果掷出 来的数字是 3, 4, 就向点 B移动一半的距离, 也标出一个新的点; 如果掷出来的数字是 5, 6, 就向点 C, 移动一 半的距离, 并标出一个新的点 ( 图 1)。连续这样抛掷骰子大约 1万次后, 就会得到 S ierp insk i三角形 ( 也称 作 Sierpinski垫片图 2) 。
Abstrac t: A fter ana lyzing random repeated a lgo rithm of S ierpinsk iT riangle, it is genera lized po lygonal F racta ls and the un iversa l pro g ram w hich is w ritten by V B language is prov ided in the paper. K ey word s: S ierpinsk i tr iang le; fracta;l random repeated algorithm
Sierpinski Triangle F ractal and its G eneralize
SH ENG M ing lan
( Computer and inform ation T echno logy Co llege, Chongqing jiaotong un ive rsity, Chongqing, 400047, Ch ina)
第 28卷第 12期 2007年 12月
微 计 算机 应 用 M ICROCOM PUTER APPL ICAT IONS
V o l 28 N o 12 D ec 2007
Sierp insk i三角形分形图及其推广
盛明 兰
(重庆交通大学计算机与信息学院 重庆 400047)
摘要: 论文通过对 S ierpinsk i三角形的随机性迭代算法进行分析, 进而推广到多边形分形图, 并给出了用 VB语言实现的通用程序。 关键词: S ierp in sk i三角形 分形 随机性迭代算法
此问题, 可将随机点和顶点之间的距离变小。为此, 引进一个偏离度的概念。所谓偏离度, 就是混沌游戏中
的随机点和多边形顶点之间的偏离距离。要获得较为理想的多边形分形图, 此偏离度最好取区间 [ 0. 2, 0.
4] 之间的值。设偏离度为 d iv, 第 n次迭代的点为 ( xn, yn) , 则第 n+ 1次迭代的点为 ( xn+ 1, yn+ 1) , 其迭代
本文于 2007- 04 - 29收到。
ห้องสมุดไป่ตู้2 期
盛明兰: S ierp insk i三角形分形图及其推广
1333
图 3 Sierp inski三角形的生成
2 S ierp insk i三角形的随机性迭代算法
设 A0 ( ax, ay ) 、B0 ( bx, by )、C0 ( cx, cy ) 为等边三角形的顶点, 用随机发生器随机地产生 A ( 1, 2), B ( 3, 4), C
y0= P o intY ( j) + ( y0 - P o intY ( j) )* div P icture1. PSet ( x0, y0), &HC000& Fo r i= 1 T o num
j= Int( R nd* n) + 1 x0= P o intX ( j) + ( x0 - P o intX ( j) )* d iv y0= P o intY ( j) + ( y0 - P o intY ( j) )* d iv P icture1. PSet ( x0, y0), &HC000& N ext i End Sub
ax + ( xn - ax ) /2,
ay + (yn - ay ) / 2,
xn+1 = bx + ( xn - bx ) / 2, . yn+ 1 = by + (yn - by ) /2, .
( 2)
cx + ( xn - cx ) /2,
cy + (yn - cy ) / 2,
! !!!
!! !!
如果在平面上任意取 n个点, 构成一 n边形 A 0B0C0D0!, 向这个 n边形中随机抛掷 [ 1, n] 点数, 随机得 到的是 A ( 点数 1), 就取 A0 和 A 连线的中点为 A 1 ( x1, y1 ) , 若随机产生的点是 B( 点数 2), 则取 B1 和 B连线 的中点为 B1 ( x1, y1 ) , 依次类推, 设第 n次迭代的点为 ( xn, yn ), 则第 n+ 1次迭代的点为 ( xn + 1, yn+ 1 ) , 其迭代 公式为:
首先, 用鼠标事件 P icture1_M ouseDown获得图片框中的 n个顶点坐标。
P rivate Sub P icture1 _M ouseD own ( Button A s In tege r, Shift A s
Integer, x A s S ing le, y A s S ing le)
! !!!
! !! !
其中, div的取值范围为 [ 0. 1, 0. 5]。这样, 便得到一个任意多边形的分形图迭代公式。特别地, 当 n=
13 34
微 计 算机 应 用
200 7年
3, d iv= 0. 5时, 分形图形为 S ierp insk i三角形。
4 多边形分形图的 VB程序实现
给定平面上 n点 a, b, c!。用二个可调数组 Po intX ( ) 和 Po in tY ( ) 分别存放这 n 个点的横坐标和纵坐 标。再随机取点 ( x0, y0), 按公式 ( 3) 做数百次的迭代。
再用随机函数 rnd( ) 产生随机点, 按给定的偏离度值求迭代点, 画出所求点。重复此过程。
P rivate Sub Comm and1_C lick( ) D im j A s Integer R andom ize If n < = 0 T hen End j= Int( R nd( )* n) + 1∀随机产生下标 j x0= P o intX ( j): y0= Po intY ( j) ∀取随 机一顶 点作为 多边形 内部点 ( x0, y0) j= Int( R nd* n) + 1∀再随机取一顶点 R em 按比例求两点间的那一点 x0= P o intX ( j) + ( x0 - P o intX ( j) )* d iv
图 4分别是此程序所得到的三角形、四边形、五边形和七边形的分形图形。
图 4 多边形分形图形
5 结束语
从以上的算法可看出, 用随机性算法, 经过数万次的迭代, 最后得到一个确定的分形图形。这就启发我 们, 随机性和确定性不是截然对立的, 它们永远都是客观存在的现象。同时, 规律性并不等于确定性。通过 对混沌和分形图形的研究, 也给我们提供了一种研究自然界复杂事物的内在规律的一种方法。
如此重复下去, 最终会得到一个 n边形的分形图。遗憾的是, 当我们每次取 n边形的顶点与任意一点的
中点时, 产生的分形图不是很好看。主要是每次取随机点与多边形顶点的中点时, 当 n> 3时, 在多边形内部
的 n个区域中就会存在相重的取点。当 n越大时, 重复的点越多, 便会形成一个很大密度的 n边形。为解决
参 考文 献
1 孙博文. 分形算法与程序设计. 北京: 科学出版 社, 2004. 2 [法 ] DAV ID RU EIIE, 刘式达等译. 机遇与混沌. 上海: 上海世纪出版集团, 2005. 3 戴晶平. 利用混沌随机函数进行分 形图形计算机模拟. 信息技术, 2005,
作者简介
盛明兰, 女, ( 1962- ) , 重庆交通大学计算机与信息工程学院, 副教授, 硕士, 主要研究方向: 普适计算和计算机应用。