python : turtle 画正多边形

数学:180 角度 = math.pi

例如:画正3边形

draw_n.py 3  100

例如:画正8边形

执行 draw_n.py 8  100

# -*- coding: cp936 -*-
import os, sys
import turtle
import math

vlist =[]

def p_line(t, n, length, angle):
    """Draws n line segments."""
    for i in range(n):
        t.fd(length)
        vlist.append(t.pos())
        t.left(angle)
 
def polygon(t, n, length):
    """Draws a polygon with n sides."""
    angle = 360.0/n
    p_line(t, n, length, angle)

def draw(tt, n, L):
    X,Y = tt.pos() # start_pos
    polygon(tt, n, L)
 
    R = L/2/math.sin(math.pi/n) # 半径  
    r = R*math.cos(math.pi/n)   # 边心距 
    # 求中心点坐标(x,y)    
    x = L/2 +X
    y = r + Y
    tt.goto(X,Y)  # start_pos
    for pos in vlist:
        tt.goto(x,y)
        tt.pendown()
        tt.goto(pos)
        tt.penup()
    print x,y
    # 画内切圆
    tt.goto(x,0)
    tt.pendown()
    tt.circle(y,360)
    tt.penup()
    # 画外接圆
    tt.goto(x,y-R)
    tt.pendown()
    tt.circle(R,360)
    tt.penup()

    
# main
if len(sys.argv) ==3:
    n = int(sys.argv[1])   # n 边形
    L = float(sys.argv[2]) # 边长
else:
    print 'usage: draw_n.py int Length'
    sys.exit(4)

if n < 3:
    print 'Error: n < 3 '
    sys.exit(4)  

if n > 36:
    print 'Error: n > 36 '
    sys.exit(4)    

window= turtle.Screen() #creat a screen
window.bgcolor("white")
tt = turtle.Turtle()
tt.color("black")
tt.width(1)
tt.speed(10)
draw(tt,n,L)
window.exitonclick()



你可能感兴趣的:(python,python,turtle)