用Python画一个符合国标的五星红旗


国标正文

        五星红旗在绘制的时候是有尺寸要求的哦,不知道大家有没有注意过呢。

        《国旗》(GB 12982-2004)规定了中华人民共和国国旗(以下简称国旗)的要求、试验方法、检验规则、标志、标签和包装。该标准适用于以化学纤维织物(不含人造纤维织物)、丝绸为材质制作的国旗,也适用于以棉、毛、麻织物为材质制作的国旗。以纸张、塑料等材质制作的国旗外观质量控制亦应参照该标准。


国标尺寸


程序设计难点分析:

        程序设计的难点在于五个五角星:五角星的起点位置不好确定,五角星的边长也不好确定。

        解决了这两个问题,五角星就可以画出来了。

注意:下方高能,需要用到数学的三角函数、反三角函数、几何知识,Python中的变量、turtle绘图、def函数封装等。请淡定阅读。

        五角星的角度分析:

        要画五角星,首先要对五角星每个角的角度有所了解:

五角星的角度分析

        大五角星的起点:

        大五角星的顶点是比较好确定的,横向数5个格子,纵向数2个格子。格子的尺寸根据五星红旗的尺寸可以算出来。计算要求如下:


        小五角星的顶点:

        先看小五角星顶点的确认方式

         小五角星的顶点可以根据大五角星的中心点,使用方向+移动的方式来定位。angle1的角度可以使用反三角函数的方式来计算。在上面的图里,两个直角边分别是3个格子和5个格子,所以角度angle1的计算方式是arctan(3/5),然后再加上弧度和角度的转换(1°=π/180°,1rad=180°/π)。用Python代码表示就是:

计算角度

        边AC的长度的计算方式利用勾股定理,两个红色边的平方和相加,然后再开方。假设一个格子的长度是cell,小五角星的直径是smallstar,那么AC之间的距离用代码来表示就是:

计算距离

        五角星的边长

        在Python中,使用代码是这么画五角星的:for循环画五条线,就像我们在纸上画时候一样,所以画五角星,需要知道每一条边的长度,而不是五角星的外径。那么这一条边要怎么计算呢?

代码画五角星

        五角星的边长可以根据下面图片里的辅助线,使用三角函数来计算。

        五角星的一条边长是半径乘以cos(18°)*2,或者是直径乘以cos(18°),18°是顶角的一半。转换弧度后用代码来表示就是:

计算五角星边长

        代码中d表示五角星外接圆的直径,因为国标里五角星给出的就是直径数值,所以我们用直径来计算。

        以上就是根据国标绘制五角星时比较难计算的地方。虽然算起来很麻烦,但是希望同学们学会用这种计算的方式来思考,具备找规律的意识。如果同学们有想到更好的画法,欢迎交流哦。

参考代码:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容