数学: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脚本,使用Turtle图形库来绘制正多边形及其内切和外接圆。通过调整边数和边长,可以轻松地绘制不同类型的正多边形,并展示其几何特性。
969

被折叠的 条评论
为什么被折叠?



