python中n角星畫法

樂正曉世發表於2019-01-13

import turtle
import math

n=eval(input(“請輸入邊個數:”))
l=eval(input(“請輸入邊長:”))

i=0#迴圈變數
if n%2==1:#奇數n角星的畫法
while i < n:
turtle.forward(l)
turtle.left(180 - (180 / n))
i+=1
turtle.done()

else :#偶數n角形畫法
n1 = n / 2 # n的一半
a = (180 * (n - 2) / n) # 正n邊形內角
b = 180 - a # n角形的內角
c = b / 2 # 長方形短邊與l圍城三角形的短邊的對角
d = 180 - (c * (n / 2 - 1))#l的對角
d1 = (d / 180) * math.pi#轉化為三角函式
c1 = (c / 180) * math.pi
e = (math.sin(c1) / math.sin(d1)) * l#長方形的短邊

while i < n1:
    turtle.forward(l)
    turtle.left(90)
    turtle.penup()
    turtle.forward(e)
    turtle.pendown()
    turtle.left(90)
    turtle.forward(l)
    turtle.left(180 - 180 / n1)
    i+=1
turtle.done()

奇數n角星可以一筆畫出,偶數n角星看為n/2個長方形長邊組成。
在這裡插入圖片描述
找到短邊與l關係,找到旋轉角度即可。

相關文章