如何用python画一个Koch snowflake
发布网友
发布时间:2022-04-25 13:11
我来回答
共3个回答
热心网友
时间:2022-04-06 04:58
可以这样做:
生成转角序列,然后转换为像素坐标。最后用python的PIL模块画图,保存为"koch.bmp"并显示图形。概念性代码:
#!/usr/bin/env python
#coding:utf-8
from PIL import Image, ImageDraw
from math import sin, cos, pi
def genRaList(raListIn, n):
raListOut = raListIn
for i in range(n):
raListOut = []
for ra in raListIn:
raListOut.extend([ra, -60, 120, -60])
raListIn = raListOut
return raListOut
def raToPoints(xy, l, raList, n):
degreeToRadian = pi/180
angleDegree = 0
r = l*(3**(-n))
x,y = xy
pt = [(x,y)]
for ra in raList:
angleDegree += ra
angleRadian = angleDegree*degreeToRadian
x += r*cos(angleRadian)
y += -r*sin(angleRadian)
pt.append((x,y))
return pt
def drawKoch(xy, l, size, raList0, n):
raList = genRaList(raList0, n)
points = raToPoints(xy, l, raList, n)
im = Image.new('1', size, 'white')
draw = ImageDraw.Draw(im)
draw.polygon(points, fill=None, outline='black')
im.save('koch.bmp')
im.show()
if __name__ == '__main__':
raList0 = [240, 120, 120]
drawKoch((207, 34), 300, (415, 415), raList0, 5)
热心网友
时间:2022-04-06 06:16
再具体些。
Koch snowflake不知道是什么意思。画在图片上还是画在canvas上。是自动画出来,还是手工画?
感觉象是分形,或者是数学的一种图案。如果是分形,python的源代码可以直接搜索到。追问
就是一个图形,好像只要写代码就行,是手工的,题目提示是告诉turtle怎么做,比如走多少路,转多少角度
追答graphics里就有这样一个函数。graphics库。里面有一系列的example,你可以挑一个来看一看。其中有一个example就是一个turtle,有些类似logo语言里的那个,一边走一边画。
热心网友
时间:2022-04-06 07:51
这个你自己画画咯,不是很难的,自己小心计算角度和每次移动的距离就够了,写几个出来你就懂了,不难的