python绘图:turtle画太极图

参考:https://www.jianshu.com/p/2a6fb8f38a16
在这里插入图片描述

原理

在这里插入图片描述
分解这个图形,图片中有四种颜色,每条曲线上的箭头表示乌龟移动的方向,首先从中心画一个半圆(红线),以红线所示圆的直径作半径画一个小圆,半径为红线所示圆半径的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()
  • 13
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值