Cantor三分集

原文http://blog.csdn.net/fyzhao/archive/2007/01/18/1486592.aspx
     Cantor三分集的构造如下图所示,一条线段ab被均分为三段,保留其两边的两段,中间一段去掉,然后把得到的每一段再继续进行划分,如此反复。
     分形结构图

      Cantor 三分集的绘制十分简单,是一种最简单的分形实例,它的算法如下:

cx = ax + ( bx – ax ) / 3

cy = ay + h

dx = bx – ( bx – ax ) / 3

dy = by + h

ay = ay – h

by = by – h

其中 h 为两层之间的距离。

        Cantor 三分集的 python 程序实现及其运行结果如下:

from Tkinter import *

class Cantor(Frame):
    
    limit = 1

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.grid()
        self.createWidgets()

    def createWidgets(self):
        self.draw = Canvas(self, width=800, height=500)
        self.draw.pack(side=LEFT)
        self.drawCanvas(100,100,700,100)

    def drawCanvas(self,ax,ay,bx,by):
        self.draw.create_line(ax,ay,bx,by)
        if ((bx-ax)>self.limit):
            cx = ax + (bx - ax) / 3;
            cy = ay + 50;
            dx = bx - (bx - ax) / 3;
            dy = by + 50;
            ay = ay + 50;
            by = by + 50;
            self.drawCanvas(ax,ay,cx,cy)
            self.drawCanvas(dx,dy,bx,by)
            



app = Cantor()
app.master.title("Cantor (recursive)")
app.mainloop()
 

  python实现结果图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值