Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3648381
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2021-05-20 17:24:14

花纹设计

from turtle import Turtle, mainloop

from time import clock

# wrapper for any additional drawing routines

# that need to know about each other

class Designer(Turtle):

    def design(self, homePos, scale):

        self.up()

        for i in range(5):

            self.forward(64.65 * scale)

            self.down()

            self.wheel(self.position(), scale)

            self.up()

            self.backward(64.65 * scale)

            self.right(72)

        self.up()

        self.goto(homePos)

        self.right(36)

        self.forward(24.5 * scale)

        self.right(198)

        self.down()

        self.centerpiece(46 * scale, 143.4, scale)

        self.getscreen().tracer(True)

    def wheel(self, initpos, scale):

        self.right(54)

        for i in range(4):

            self.pentpiece(initpos, scale)

        self.down()

        self.left(36)

        for i in range(5):

            self.tripiece(initpos, scale)

        self.left(36)

        for i in range(5):

            self.down()

            self.right(72)

            self.forward(28 * scale)

            self.up()

            self.backward(28 * scale)

        self.left(54)

        self.getscreen().update()

    def tripiece(self, initpos, scale):

        oldh = self.heading()

        self.down()

        self.backward(2.5 * scale)

        self.tripolyr(31.5 * scale, scale)

        self.up()

        self.goto(initpos)

        self.setheading(oldh)

        self.down()

        self.backward(2.5 * scale)

        self.tripolyl(31.5 * scale, scale)

        self.up()

        self.goto(initpos)

        self.setheading(oldh)

        self.left(72)

        self.getscreen().update()

    def pentpiece(self, initpos, scale):

        oldh = self.heading()

        self.up()

        self.forward(29 * scale)

        self.down()

        for i in range(5):

            self.forward(18 * scale)

            self.right(72)

        self.pentr(18 * scale, 75, scale)

        self.up()

        self.goto(initpos)

        self.setheading(oldh)

        self.forward(29 * scale)

        self.down()

        for i in range(5):

            self.forward(18 * scale)

            self.right(72)

        self.pentl(18 * scale, 75, scale)

        self.up()

        self.goto(initpos)

        self.setheading(oldh)

        self.left(72)

        self.getscreen().update()

    def pentl(self, side, ang, scale):

        if side < (2 * scale): return

        self.forward(side)

        self.left(ang)

        self.pentl(side - (.38 * scale), ang, scale)

    def pentr(self, side, ang, scale):

        if side < (2 * 货币代码scale): return

        self.forward(side)

        self.right(ang)

        self.pentr(side - (.38 * scale), ang, scale)

    def tripolyr(self, side, scale):

        if side < (4 * scale): return

        self.forward(side)

        self.right(111)

        self.forward(side / 1.78)

        self.right(111)

        self.forward(side / 1.3)

        self.right(146)

        self.tripolyr(side * .75, scale)

    def tripolyl(self, side, scale):

        if side < (4 * scale): return

        self.forward(side)

        self.left(111)

        self.forward(side / 1.78)

        self.left(111)

        self.forward(side / 1.3)

        self.left(146)

        self.tripolyl(side * .75, scale)

    def centerpiece(self, s, a, scale):

        self.forward(s); self.left(a)

        if s < (7.5 * scale):

            return

        self.centerpiece(s - (1.2 * scale), a, scale)

def main():

    t = Designer()

    t.speed(0)

    t.hideturtle()

    t.getscreen().delay(0)

    t.getscreen().tracer(0)

    at = clock()

    t.design(t.position(), 2)

    et = clock()

    return "runtime: %.2f sec." % (et-at)

if __name__ == '__main__':

    msg = main()

    print(msg)

    mainloop()

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