python绘图:turtle画八卦阵

参考:https://www.jianshu.com/p/2a6fb8f38a16
python绘图:turtle画八卦阵_第1张图片

原理

python绘图:turtle画八卦阵_第2张图片
分解这个图形,图片中有四种颜色,每条曲线上的箭头表示乌龟移动的方向,首先从中心画一个半圆(红线),以红线所示圆的直径作半径画一个校园,半径为红线所示圆半径的0.15倍(蓝线),之所以选择0.15倍,是因为这样嵌入红圆内的小圆直径和红圆直径接近黄金分割。

代码

导入turtle库

import turtle

创建画布

window = turtle.Screen
......
window.exitonclick()

创建画笔

bage = turtle.Turtle()

设置画笔颜色

bage.color("black", "black")

设置画笔的宽度

bage.width(3)

准备开始填充图形

bage.begin_fill()

画一个半径为radius/2,弧度为180的半圆,画红线所示半圆

radius = 100
bage.circle(radius/2, 180)

画黄线所示的圆,半径radius,弧度180半圆

bage.circle(radius, 180)

将画笔方向旋转180度

bage.left(180)

画绿线所示半圆,画一个半径为radius/2,弧度180半圆,此时半径值为负

bage.cirle(-radius/2, 180)

结束填充

bage.end_fill()

画笔向左旋转90度,正好指向画板上方

bage.left(90)

抬起画笔,在运动时不会留下痕迹

bage.up()

向前移动radius0.35,这样小圆边线距离大圆边线上下各radius0.35

bage.forward(radius*0.35)


隐藏画笔

bage.ht()

完整代码

import turtle

window = turtle.Screen()

bage = turtle.Turtle()

radius = 100
bage.width(3)
bage.color("black", "black")
bage.begin_fill()
bage.circle(radius/2, 180)
bage.circle(radius, 180)
bage.left(180)
bage.circle(-radius/2, 180)
bage.end_fill()

bage.left(90)
bage.up()
bage.forward(radius*0.35)
bage.right(90)
bage.down()
bage.color("white", "white")
bage.begin_fill()
bage.circle(radius*0.15)
bage.end_fill()

bage.left(90)
bage.up()
bage.backward(radius*0.7)
bage.down()
bage.left(90)
bage.color("black", "black")
bage.begin_fill()
bage.circle(radius*0.15)
bage.end_fill()

bage.right(90)
bage.up()
bage.backward(radius*0.65)
bage.right(90)
bage.down()
bage.circle(radius, 180)
bage.ht()
    
window.exitonclick()

你可能感兴趣的:(Python)