Advertisement

使用递归法生成Sierpinski垫片的Matlab程序设计并附上源代码

阅读量:

【Sierpinski“垫片”的生成机制如下:首先选取一个正三角形,将其划分为四个更小的正三角形,并移除中央部分。随后,对剩余的三个小正三角形分别进行同样的操作,即再次分割为四个更小的部分并去除中间的一个。接着,对剩下的九个小正三角形继续执行相同的步骤,重复这一过程直至无限次。最终所形成的图形即为谢尔宾斯基三角形,也被称为Sierpinski“垫片”。

通过上述构造方式可以发现,该图形具备严格的自相似性特征,因此可以通过递归算法实现其在计算机上的绘制。其算法原理如下:一个正三角形的位置信息可通过其中心点O和半径R来确定。为了便于计算,采用复数形式表示该图形的关键参数。假设正三角形的中心位置为p = p,半径为r = r,则三个顶点的位置可由向量z =[x1+iy1,x2+iy2,x3+i*y3]表示,并满足以下公式:

z = p + r * exp( i * ( [0:3] * pi * 2/3 + a ) )

其中a代表正三角形的偏转角度。当a=0时,底边与坐标轴纵轴平行;而当a=-pi/6时,则底边与坐标轴横轴平行。

根据上述表达式即可确定一个正三角形A。当将半径减半至r/2时,所得新图形B的面积恰好是原图A面积的四分之一,并且B的中心及其顶点正好对应于将A四等分后得到的四个较小正三角形C1、C2、C3和C4各自的中心位置。由此可知,

全部评论 (0)

还没有任何评论哟~