Python基础图形绘图教学1

  • 绘画正三角形、四边形、五边形、六边形、七边形、八边形、九边形...
  • 绘画正多边形内邻点连线图形


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

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

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()

python绘制七边形 用python画七边形的代码_ide


你没看错,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()

python绘制七边形 用python画七边形的代码_连线_02

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

import turtle

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

python绘制七边形 用python画七边形的代码_ide_03

好,这上面的初始旋转角72和旋转角144都是怎么计算的呢,这里就要画个图,来做一道数学题了,这里以正七边形内邻点连线图形为例:

python绘制七边形 用python画七边形的代码_python绘制七边形_04


这是正七边形,接下来连接其所有邻点:

python绘制七边形 用python画七边形的代码_python绘制七边形_05


可以看到上面博主列出的数学算式,计算出旋转角是 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()

python绘制七边形 用python画七边形的代码_ide_06


发现画的真完美,给我们自己点个赞吧!

接下来我们用这个规则多画几个(偶数边形的会发现连出来是两个一半的正多边形,所以等会再看,这里只看奇数的图形):

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()

python绘制七边形 用python画七边形的代码_python_07

这里由于要画不同图形的旋转角,所以使用 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()

python绘制七边形 用python画七边形的代码_python绘制七边形_08

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