首页 热点资讯 义务教育 高等教育 出国留学 考研考公

如何用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

这个你自己画画咯,不是很难的,自己小心计算角度和每次移动的距离就够了,写几个出来你就懂了,不难的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com