turtle绘制螺旋图和太极图
都挺简单的, 直接上图和代码
运行结果
完整代码
import time
import turtle
def rgbToHex(r, g, b):
return '{:0>2}{:0>2}{:0>2}'.format(hex(r % 256)[2:], hex(g % 256)[2:], hex(b % 256)[2:])
def screw():
colors = ['yellow', 'red', 'orange', 'cyan', 'green', 'blue', 'white', 'purple', 'pink'] # 备用
t = turtle.Pen()
t.speed(0), turtle.Turtle().screen.delay(0)
t.ht()
# 螺旋正方形
t.color('red')
for i in range(300):
t.fd(i+1), t.right(90)
time.sleep(1)
t.home(), t.clear() # 清空之前的操作,下同
# 螺旋圆弧
for i in range(600):
t.width(i/6)
t.color('#' + rgbToHex(i*3, i*2, i*1))
t.circle(i/2, 1)
time.sleep(2)
t.home(), t.clear(), t.width(3)
# 螺旋多边形
turtle.bgcolor('black')
numedges = 9 # number of edges of polygon
for i in range(numedges*20):
t.color(colors[i%numedges])
# t.color('#' + rgbToHex(i*20,i*30,i*10))
t.fd(i), t.right(360/numedges - 1)
time.sleep(1)
# 太极图
turtle.bgcolor('white')
t.width(1)
t.clear(), t.pu(), t.goto(0, -200), t.pd(), t.seth(0), t.color('white')
t.circle(200)
t.begin_fill(), t.fillcolor('black')
t.circle(200, 180), t.left(90), t.fd(400)
t.end_fill()
t.pu(), t.goto(0, -200), t.color('black'), t.seth(0), t.pd()
t.circle(200)
t.pu(), t.goto(0,-100), t.pd()
t.dot(200, 'black'), t.dot(50, 'white')
t.pu(), t.goto(0,100), t.pd()
t.dot(200, 'white'), t.dot(50, 'black')
turtle.done()
def main():
# chessboard(30)
screw()
main()
只要是规则的几何图形, 找出规律, 就很容易画
螺旋的关键点就在于边(或半径)逐渐变化, 螺旋多边形各个角的角度和不等于360°