python turtle绕原点旋转_中秋节,我们用Python代码做个五仁月饼吧

4c5daf9b8cffd0bd327d7c4a2274e9ca.png

今天中秋节,FlyPython在这里祝大家中秋快乐。身为程序猿,也了解到今天也是程序猿日,做什么好呢?我们就来学习用Python程序来做个月饼吧。

5229c012eaeabc4919bfffa0b5d8fd4c.png

先从网上搜到一张月饼图片:

4f1dd2e5ac72bb65367f3f5f827eb4b9.png

我们就按照这个图的轮廓来画一个简单的月饼图。

首先,我们需要熟悉Turtle。

Python的Turtle又叫海龟作图,它功能强大,使用方便。简单来说,就是给你有一块空白,以中央为原点,画条横轴x,纵轴y,然后一只小乌龟以(0,0)作为起点,开始按照函数的指令来爬行,爬行的过程中会出现轨迹,还可以将爬行的地方填充一下颜色。这样,一个图形就出现了。

官方中文文档 : turtle --- 海龟绘图 - Python 3.7.4 文档

这里我们先画轮廓。

Turtle提供了circle()函数来画圆,我们分析月饼的基本轮廓。

e0f4493859dab3dc47faf3dcfeddda83.png

由上图知道,由一个大圆和十几个小的半圆组成。

先画中间的大圆:

def draw_circle(r):
    tt.penup()
    tt.goto(0, -r)
    tt.seth(0)
    tt.pendown()
    tt.pensize(5)
    tt.color(‘#FF7F00')
    tt.circle(r)

再画小半圆:

def draw_petal(r, n):
    tt.penup()
    tt.goto(0, -r)
    tt.seth(0)
    tt.pendown()
    small_r = math.sin( math.pi/n) * r
    
    for i in range(n):
        tt.penup()
        tt.home()
        tt.seth((360/n)*i)
        tt.fd(r)
        tt.left((360/n)*0.5)
        tt.pendown()
        tt.circle(small_r,180)

 

入口函数调用:

def draw():
    draw_circle(100)
    draw_petal(100,10)

效果:

5acd898d94ec11c3d95ccc85254f2ce8.png

看原图发现小半圆和大圆并不是直接接触的,我们需要调整一下距离。然后在里面添加一个正方形

def draw_square(d, r):
    tt.penup()
    tt.seth(0)
    tt.goto(d/2 + r, -d/2)
    tt.left(90)
    tt.pendown()
    
    for i in range(4):
        tt.fd(d)
        tt.circle(r, 90)

入口函数变为:

def draw():
    draw_circle(100)
    draw_petal(120,10)
    draw_square(100,10)
    tt.done()

效果如下:

2e40c6c41f64e1d20057baebf302bb09.gif

在正方形里面写字:

def draw_word(word, x, y):
    tt.penup()
    tt.goto(x, y)
    tt.pendown()
    tt.write(word, font=("微软雅黑",35, "normal"))

最终的效果:

9ac3336ee0f2361abcd705a7151f96a3.gif

我们还可以进行颜色填充,最终效果如下:

c566f2f4ee01eb1db0e7f29f46593299.gif

最后完整代码链接:

flypythoncom/flypython

再次祝大家中秋节快乐,程序员日快乐,欢迎多多关注FlyPython,长按下面二维码关注我们。

a7f8f6b9363b192b137a95fae374782d.png

公众号链接:

中秋节,我们用Python代码做个五仁月饼吧​mp.weixin.qq.com
59aa5b4811be63b1e2c7a0e9a96eea1d.png
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值