1. 导入库
from turtle import * # 导入turtle库的所有函数(用于绘图)
from colorsys import * # 导入colorsys库的所有函数(用于颜色转换)
2. 定义曲线函数 curve()
def curve():
for i in range(200):
right(1) # 每次向右转1度
forward(1) # 每次向前移动1单位
3. 初始化绘图参数
tracer(10) # 每10步刷新一次屏幕(加速绘图,减少闪烁)
delay(0) # 绘图延迟设为0(最快速度)
speed(0) # 画笔速度设为最快(0代表最快)
pensize(3) # 画笔粗细为3像素
bgcolor("black") # 背景色设为黑色
left(140) # 初始向左转140度(调整整体图形角度)
4. 主绘图逻辑
cycles_number = 2 # 控制绘制的“周期”数量(这里是2次)
for _ in range(cycles_number):
s = 1 # 初始饱和度(用于颜色渐变)
for i in range(36): # 每个周期内绘制36个图形单元
# 设置颜色:画笔颜色固定为#C90055(深粉色),填充色用HSV转RGB
color("#C90055", hsv_to_rgb(0.92, s, 1))
begin_fill() # 开始填充图形
# 绘制一个“花瓣状”基本单元
forward(111.65) # 向前移动固定距离
curve() # 绘制曲线
left(120) # 向左转120度
curve() # 绘制另一条曲线
forward(111.65) # 向前移动固定距离
end_fill() # 结束填充
hideturtle() # 隐藏画笔(避免显示笔尖)
right(90) # 向右转90度(准备绘制下一个单元)
s -= 0.02 # 饱和度递减(使填充色逐渐变浅)
done() # 保持绘图窗口
5. 核心逻辑解析
-
颜色渐变:通过
hsv_to_rgb(0.92, s, 1)生成填充色。其中:- H(色相)固定为 0.92(接近红色 / 粉色系);
- S(饱和度)从 1 逐渐减到 0.34(36 次循环,每次减 0.02),颜色从鲜艳逐渐变浅;
- V(明度)固定为 1(最亮)。
-
图形结构:每个周期绘制 36 个 “花瓣单元”,每个单元由两条曲线和两条直线组成,绘制完成后旋转 90 度,形成螺旋扩散的效果。
-
多层绘制:
cycles_number=2表示重复绘制 2 个周期,最终形成更复杂的叠加图形。
最终效果
运行后会生成一个以黑色为背景、由粉色系渐变填充的螺旋状图形,整体呈现对称且渐变的视觉效果。
6.代码示例:
from turtle import *
from colorsys import *
def curve():
for i in range(200):
right(1)
forward(1)
tracer(10)
delay(0)
speed(0)
pensize(3)
bgcolor("black")
left(140)
cycles_number = 2
for _ in range(cycles_number):
s = 1
for i in range(36):
color("#C90055", hsv_to_rgb(0.92, s, 1))
begin_fill()
forward(111.65)
curve()
left(120)
curve()
forward(111.65)
end_fill()
hideturtle()
right(90)
s -= 0.02
done()