【Python绘图】绘图常见的构成元素1

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:Python绘图 ,一个专注于分享绘图案例与教学的专栏~

专栏文章直链:
【Python绘图】学习绘图第一步,先要知道哪些操作是常用的
【Python绘图】朋友过生日不知道送什么?免费的蛋糕送给他
人生苦短,我用python

绘画正三角形、四边形、五边形、六边形、七边形、八边形、九边形…

常见的正多边形是要会绘制的,毕竟也不复杂,都是同一个函数画出来的。

import turtle

turtle.setup(800, 200)
for i in range(3, 10):
    turtle.penup()
    turtle.goto(x=i * 110 - 660, y=-50)
    turtle.pendown()
    print(f'执行语句:turtle.circle(radius=50, extent=360, steps={i})')
    turtle.circle(radius=50, extent=360, steps=i)
turtle.exitonclick()

在这里插入图片描述
你没看错,turtle.circle(radius=50, extent=360, steps={i}) ,就是这个,加上 steps 就是画正多边形(此时的 radius 是外接圆半径),不加就是画圆或圆弧;当 extent 小于 360 时,画出的就是圆弧。

绘画正多边形内邻点连线图形

光会画正多边形还不够,还要会画其内邻点连线图形,比如说五角星:

import turtle

turtle.setup(200, 200)
for i in range(5):
    turtle.forward(80)
    turtle.right(144)
turtle.exitonclick()

在这里插入图片描述

这个起点不是最上方点,显得不在我们掌控之内,所以我们再旋转一下:

import turtle

turtle.setup(200, 200)
turtle.right(72)
for i in range(5):
    turtle.forward(80)
    turtle.right(144)
turtle.exitonclick()

在这里插入图片描述

好,这上面的初始旋转角72和旋转角144都是怎么计算的呢,这里就要画个图,来做一道数学题了,这里以正七边形内邻点连线图形为例:
在这里插入图片描述
这是正七边形,接下来连接其所有邻点:
在这里插入图片描述
可以看到上面博主列出的数学算式,计算出旋转角是 4 * 180 / 边数 ,这就能轻易得出,正七边形内邻点连线图形的每个突出的角,应该是 180 - (4 * 180 / 边数) ,那么初始旋转角应该是 90 减去它的一半,就是 2 * 180 / 边数 ,现在我们用这个公式来计算一下正七边形:
初始旋转角 = 4 * 180 / 7 = 720 / 7
旋转角 = 2 * 180 / 7 = 360 / 7
然后我们用这个数据来画一个:

import turtle

turtle.setup(200, 200)
turtle.right(360 / 7)
for i in range(7):
    turtle.forward(60)
    turtle.right(720 / 7)
turtle.exitonclick()

在这里插入图片描述
发现画的真完美,给我们自己点个赞吧!
接下来我们用这个规则多画几个(偶数边形的会发现连出来是两个一半的正多边形,所以等会再看,这里只看奇数的图形):

import turtle

turtle.setup(680, 200)
for s in range(5, 12, 2):
    turtle.penup()
    turtle.goto(x=s * 80 - 660, y=60)
    turtle.pendown()
    turtle.setheading(-2 * 180 / s)
    for i in range(s):
        turtle.forward(70)
        turtle.right(4 * 180 / s)
turtle.exitonclick()

在这里插入图片描述

这里由于要画不同图形的旋转角,所以使用 turtle.setheading(-2 * 180 / s) 来调整初始角会更加方便。
接下来可以将这个发现组成一个简单的函数,这样就能绘制任意奇数正多边形内邻点连线图形:

import turtle


def draw_odd_polygon(location, radius, side):
    turtle.penup()
    turtle.goto(*location)
    turtle.pendown()
    turtle.setheading(-2 * 180 / side)
    for i in range(side):
        turtle.forward(radius)
        turtle.right(4 * 180 / side)


turtle.setup(680, 200)
for s in range(5, 12, 2):
    draw_odd_polygon((s * 80 - 660, 60), 70, s)
turtle.exitonclick()

在这里插入图片描述

当中有点小事情耽搁了写博文,但是我又想在此时此刻发出博文,所以只写了一半,剩余的见下一篇哦~

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值