如何用python画一个Koch snowflake Python画koch曲线如何填充颜色

\u4e0d\u7528Python\u7684turtle\u5e93\u600e\u4e48\u751f\u6210koch curve\u5404\u70b9\u7684\u5750\u6807

Turtle\u4e43\u9f9f\u7684\u610f\u601d,\u6700\u521d\u5c5e\u4e8elogo\u8bed\u8a00\u7684(\u6ca1\u73a9\u8fc7)..\u4e0d\u8fc7\u540e\u6765\u4e5f\u6709\u522b\u7684\u8bed\u8a00\u652f\u6301.\u5176\u4e00\u662fSmallBasic,\u5176\u4e8c\u5c31\u662fPython.\u4e00\u76f4\u4e0d\u77e5\u9053\u8fd9\u4e2a\u5e93\u7adf\u7136\u662fPython\u5185\u7f6e\u7684.\u5b83\u662f\u57fa\u4e8eTk\u5e93\u7684.

#\u5f88\u7b80\u5355\u5566 \uff0c \u4e0d\u5e9f\u8bdd\u76f4\u63a5\u8d34\u4ee3\u7801\u4e86\uff0c\u6211\u77e5\u9053\u4f60\u559c\u6b22\u8fd9\u6837
from turtle import *def snowflake(lengthSide, levels): if levels == 0: forward(lengthSide) return lengthSide /= 3.0 snowflake(lengthSide, levels-1) left(60) snowflake(lengthSide, levels-1) right(120) snowflake(lengthSide, levels-1) left(60) snowflake(lengthSide, levels-1)def full_snowflake(lengthside, levels): for i in range(3): snowflake(lengthside, levels) right(120)if __name__ == "__main__": speed(0) length = 300.0 begin_fill() fillcolor('green') penup() backward(length/2.0) pendown() full_snowflake(length, 4) begin_fill() end_fill()

可以这样做:
生成转角序列,然后转换为像素坐标。最后用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)

再具体些。
Koch snowflake不知道是什么意思。画在图片上还是画在canvas上。是自动画出来,还是手工画?

感觉象是分形,或者是数学的一种图案。如果是分形,python的源代码可以直接搜索到。

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

扩展阅读:免费学python的8个网站 ... 学python后到底能干什么 ... python编程入门自学免费 ... python初学编程必背 ... python编程免费网站 ... python视频教程在线观看 ... 免费python源代码大全 ... python用turtle画樱花 ... 用python画一个奥特曼 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网