美文网首页Python
用Python画一个符合国标的五星红旗

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

作者: 虽然菜 | 来源:发表于2021-10-01 09:59 被阅读0次


    国标正文

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

            《国旗》(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表示五角星外接圆的直径,因为国标里五角星给出的就是直径数值,所以我们用直径来计算。

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

    参考代码:

    相关文章

      网友评论

        本文标题:用Python画一个符合国标的五星红旗

        本文链接:https://www.haomeiwen.com/subject/nnzenltx.html