Fractal Tree——pygame画分形树

一.导入需要的模块,初始化绘图

import pygame
import math

pygame.init()#初始化
window = pygame.display.set_mode((600, 600))#设置窗口大小
pygame.display.set_caption("分形树")#设置窗口标题
screen = pygame.display.get_surface()#获取当前显示的 Surface 对象

 

二.定义画线方法——利用递归自动画线

def drawTree(x1, y1, angle, depth):
    if depth:
        # radians()方法把角度转化为弧度角x
        x2 = x1 + int(math.cos(math.radians(angle)) * depth * 10.0)
        y2 = y1 + int(math.sin(math.radians(angle)) * depth * 10.0)
        pygame.draw.line(screen, (255,255,255), (x1, y1), (x2, y2), 2)
        #line(Surface, color, start_pos, end_pos, width=1)
        drawTree(x2, y2, angle - 20, depth - 1)
        drawTree(x2, y2, angle + 20, depth - 1)

这里做些说明,x,y变化时最后乘以一个常数是为了将变化放大,不然cos与sin后得到的是一个比较小的数,两点之间差距小,最后画出来的图也是一张很小的图;

角度每次变化20是实践得来的经验,因为按这个角度变化最后得来的图是相对好看的

 

三.画图出结果

drawTree(300, 600, -90, 9)

因为定义的窗口大小是600*600,而原点在左上角,向下向右为正,所以起点定义在最下方的中间,角度要是负的,不然它往下画画出窗口外是看不见的,如果你非要角度为正,那你的起点就要设在上面,不过最后整个树也是倒过来的。

这是我的结果:

Fractal Tree——pygame画分形树_第1张图片

 

 

你可能感兴趣的:(有意思的小玩意)