Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367715
  • 博文数量: 97
  • 博客积分: 2846
  • 博客等级: 少校
  • 技术积分: 1000
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-19 20:00
文章分类

全部博文(97)

文章存档

2017年(1)

2013年(2)

2012年(6)

2011年(17)

2010年(12)

2009年(41)

2007年(18)

我的朋友

分类: Python/Ruby

2009-05-10 12:27:24

Koch curve

A variant of the Koch curve which uses only right-angles.

variables : F
constants : + −
start  : F
rules  : (F → F+F−F−F+F)

Here, F means "draw forward", + means "turn left 90°", and - means "turn right 90°".

n = 0:

F

n = 1:

F+F-F-F+F

n = 2:

F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F

n = 3:

F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F+ F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F- F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F- F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F+ F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F-F+F

 

 

import turtle

def F():
    turtle.forward(10)
def add():
    turtle.left(90)
def minus():
    turtle.right(90)

def Koch(n):
    if n == 0:
        F()
    elif n == 1:
        F(),add(),F(),minus(),F(),minus(),F(),add(),F()
    else:
        Koch(n-1),add(),Koch(n-1), minus(),Koch(n-1),minus(),Koch(n-1),add(),Koch(n-1)
    
if __name__ == '__main__':
    Koch(3)

 

注意:值不要设的太大,要不然画的时间很长。

阅读(959) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~