Python绘制标准国旗
2021-08-25王德贵
王德贵
我们曾经用Python绘制了党旗,也用Scratch绘制过国旗。不过在Python中绘制标准国旗并不简单,我们采用的方法在数学上称为解析法。
一、准备工作
1.国旗标准图案及分析

把整个国旗换成直角坐标系,中心坐标为(0,0)。每个小格边长20,则国旗左上角坐标为(-300,200),国旗长600、高400。五星所在的区域为第二象限,横坐标为负,纵坐标为正。
大五星是正立放置的,而4颗小五星则是顶点中心轴线正对着大五星的中心,即是大五星中心、小五星中心和小五星顶点在一条直线上,而且上下1、4两颗和右侧2、3两颗是关于第五个横格对称的。
2.五星的坐标及相关参数
设定坐标的标度为每个小格20,大五星的中心坐標为(-200,100),半径60,顶点坐标为(-200,160)。
小五星的半径为20。4个小五星中心坐标分别为(-100,160)、(-60,120)、(-60,60)、(-100,20)。
大五星顶点中心正上方,横向长度为0,纵向为3。小五星对应大五星中心相对横纵长度(x,y)分别为(5,3)、(7,1)、(7,-2)、(5,-4)。负值表示在相对中心的下方。
3.三角函数及反三角函数
小五星的顶点要正对着大五星的中心,所以需要知道小五星顶点中心轴的方向角。具体算法从略,我在源代码中做了简单的注释。
二、程序设计

1.导入Turtle库和Math库
Turtle是小海龟绘图库,Math是数学库,我们要用到里面的三角函数和反三角函数,以及圆周率pi值。from导入方法能使程序简化一点,详细作用请参考其他资料。

2.国旗外围框
3.大五星

大五星的起始点,我们能最准确得到的,就是上面的顶点,坐标为(-300,200),其他顶点均不是整数。这个顶点要画五角星,需要向斜下方开始画,我们使用绝对角度setheading()设置小海龟的方向。……
