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绘制五角星等能一笔画出的角星的主要内容,如果未能解决你的问题,请参考以下文章