Python绘制五角星等能一笔画出的角星

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python绘制五角星等能一笔画出的角星相关的知识,希望对你有一定的参考价值。

只有奇数和4的整数倍的角星才能一笔画出,见程序和注释:

多画几种情况认真分析,注意到辅助线对角的等分是绝对的,与边的垂直是特殊的.

奇数角星小角360/(2n),偶数角星小角360/n.可按此公式画出任意角星,但只有一笔能画出的角星比较美观,有一气呵成之美.

n=2k 但不是n!=4k的角星可由两个k角星旋转得到,相位差360/n.旋转时注意区分n和k.

import math
import turtle as t

#这种方法只能画只在尖角处转向就可以画出的角星,\\
# 即可以用等长线段(线段长度为不转弯的最大)不提笔画完的角星\\
#如注释吊28,29行,则偶数角数变为原来2倍,证明此方法只能画奇数和4的整数倍的角星\\
#即只有奇数和4的整数倍的角星才能一笔画出

def loop(r,n):
    t.fd(ol(r,n))
    t.right(180-360/(2*n))

def ol(r,n):
    na = (360/(4*n)) / 180 * math.pi
    ol = r * math.cos(na) * 2
    ol = int(round(ol))
    return ol

def relocation(r,n):
    t.penup()
    t.left(90)
    t.fd(r)
    t.right(180 - 360/(4*n))
    t.pendown()

def main(r,n):
    times=n
    if n==1 or n==2:
        print(\'error input\')
        exit()
    elif n%2==1:
        print(\'开始绘制...\')
    elif n%2==0:
        n/=2
        if n%2==1:
            print(\'无法一笔画出{0:.0f}角星\'.format(times))
            exit()
        else:
            print(\'开始绘制...\')
    else:
        print(\'error input\')
        exit()
    relocation(r,n)
    for i in range(times):
        loop(r,n)
    t.penup()
    t.goto(0,0)
    t.seth(0)
    t.pendown()

r=200
n=eval(input(\'请输入要绘制的角星的角数n,n需是>=3的整数:\')) #eval()函数很重要,不要总忘记加!!!
t.pensize(8)  #注意t.pensize(20)不是t.pensize=20,变量赋值采用=,属性更改用t.pensize(20)
t.color(\'green\')
t.speed(10)
t.setup(450,450)
main(r,n)
t.done()

五角星和十六角星:

以上是关于Python绘制五角星等能一笔画出的角星的主要内容,如果未能解决你的问题,请参考以下文章

如何采用Python语言绘制一个五角星

python 绘制五角星

python 绘制五角星

latex里面标题上的角标星号如何显示为五角星?

python使用turtle库绘制如下的五角星

VB.NET关于绘制五角星