现在来补充一下,之前的笑脸画法
首先,我们来引入两个接下来画笑脸需要用到的库
一分析了,首先看下我们的目标图形(在文开始),并对其进行简单的解析
import turtle as t
import math
首先,我们的思路是先画出一个大圆
然后,分别定义画大小嘴唇的,左右眼睛的,左右脸颊的函数
最后,在完成了前期的所有基本结构之后,进行颜色的填充
接下来看代码
def upmouth():
t.left(90)
t.up()
t.fd(25)
t.down()
t.fillcolor("red")
t.begin_fill()
t.left(90)
x = 1
for i in range(180):
t.pencolor("red")
t.fd(3)
t.right(1)
t.end_fill()
---------------------
作者:gzh_love_python
来源:CSDN
原文:https://blog.csdn.net/gzh_love_python/article/details/88204664
版权声明:本文为博主原创文章,转载请附上博文链接!
这是上嘴唇的代码,前半部分没啥稀奇的,就是那个便利循环
这里的遍历循环的数学原理就是微积分基本思想
接下来画下嘴唇,同样的方法,实验它的各项参数,当然实验之前需要用高中数学进行一定的计算,得出一个比较模糊的数值,随后再进行多次调整。这里说下,用到的公式有,弧长 = 圆心角(弧度制) * 半径, 再根据之前定义的大脸盘子的半径,进行半径的求解,需要用到反三角函数。
def down_mouth():
t.fillcolor(“yellow”)
t.begin_fill()
t.right(90 + 80)
for u in range(163):
t.pencolor(“red”)
t.left(1)
t.fd(3)
t.end_fill()
t.up()
t.goto(190, 310)
t.down()
---------------------
作者:gzh_love_python
来源:CSDN
原文:https://blog.csdn.net/gzh_love_python/article/details/88204664
版权声明:本文为博主原创文章,转载请附上博文链接!
而后,就是画眼睛了,经过观察,不难发现,对于画两只眼睛而言,只需改变turtle的起始位置即可,其他的参数全都一样,所以,对眼睛的上下弧长求解就变得很重要了。经过观察,不难看出,眼睛的主体框架其实是两条圆心角相同,半径不同的弧。而眼睛的边角就是半圆。
def eyes():
t.fillcolor(“white”)
t.begin_fill()
for r in range(100):
t.fd(2)
t.left(1)
t.circle(10, 180)
for r in range(100):
t.fd(2 - (math.pi / 9))
t.right(1)
t.circle(10, 180)
t.end_fill()
t.up()
t.circle(10, 90)
t.right(90)
for r in range(90):
t.fd(2 - (math.pi / 13))
t.left(1)
t.down()
t.fillcolor(“black”)
t.begin_fill()
t.circle(10)
t.end_fill()
---------------------
作者:gzh_love_python
来源:CSDN
原文:https://blog.csdn.net/gzh_love_python/article/details/88204664
版权声明:本文为博主原创文章,转载请附上博文链接!
接下来就是最后的部分了,画出脸颊,同样是用微积分思想,这里需要强调一下,角度的不断修正,来自于turtle相对于水平线的相对角度,而得出这个角度的方法就是做切线,还是离不开微积分。
def cheek():
t.pensize(2)
t.fillcolor(“pink”)
t.pencolor(“pink”)
t.begin_fill()
for c in range(90):
t.fd(10 / 8)
t.left(1)
t.left(90)
for c in range(90):
t.fd(10 / 8)
t.left(1)
t.end_fill()
---------------------
作者:gzh_love_python
来源:CSDN
原文:https://blog.csdn.net/gzh_love_python/article/details/88204664
版权声明:本文为博主原创文章,转载请附上博文链接!
最后,就是主体框架了
t.begin_fill() t.circle(200,360+90) t.end_fill() # 画上嘴唇
upmouth() # 画下嘴唇
down_mouth() # 修正角度
t.left(50) t.pencolor(“black”) # 画右眼睛 eyes() # 修正角度
t.right(90)
# 修正坐标
t.up()
t.goto(-10,310)
t.down()
# 画左眼睛
eyes()
# 修正角度
t.right(130)
t.left(45)
# 画右脸颊
t.up()
t.goto(150, 250)
t.down()
cheek()
# 画左脸颊
t.up()
t.left(90)
t.goto(-50,250)
t.down()
cheek()
t.exitonclick()
12345678910111213141516171819202122232425262728
if name == “main”:
main()
---------------------
作者:gzh_love_python
来源:CSDN
原文:https://blog.csdn.net/gzh_love_python/article/details/88204664
版权声明:本文为博主原创文章,转载请附上博文链接!