
目录
实现效果
Turtle库
代码思路讲解
一、视觉基础搭建
二、动态螺旋生成
三、数学与艺术的结合
整体代码
梵高《星空》
整体代码
螺旋烟花
Turtle库是Python里一个挺有意思的绘图工具,用起来有点像小时候玩的那种会画画的小机器人。它的设计灵感来自1960年代的Logo语言,核心思想是用代码指挥一只虚拟的"海龟"在屏幕上爬行,爬过的轨迹就形成图案。这种将编程可视化的方式特别适合教学,比如教小孩理解角度、坐标这些抽象概念,不过成年人拿它做艺术创作也挺好玩的。
基础操作其实特别简单,就跟指挥真乌龟似的。比如想让小龟画个正方形,只需要让它走100步,右转90度,重复四次就完事了。常用的命令也就那几个:forward()前进、backward()后退、left()左转、right()右转,跟开遥控车差不多。同时还能设置画笔粗细,改颜色,甚至让小龟隐身,只留下画迹。
这个库最好的地方是把数学和艺术揉在一起了。比如画五角星要算准144度的转向角度,这是根据正五边形内角公式推导出来的。要画彩虹螺旋的话,得用上HSV颜色空间的渐变转换,让色相在0到1之间均匀变化,这样颜色过渡才自然。有次我试过用斐波那契数列控制螺旋的扩张幅度,结果画出来的图案有种自然的生长美感。
进阶玩法可以搞点创意组合。比如先让小龟画个六边形,每画一边就缩小尺寸旋转15度,重复几十次能形成漂亮的几何花纹。或者用随机数控制转向角度和步长,每次运行都能生成独一无二的抽象画。有朋友还拿这个库做生成艺术,把股票数据转化成动态螺旋图,看着K线图变成彩色花纹特别魔幻。
实际用的时候有些小技巧要注意。画复杂图形记得用tracer(0)和update(),这样能跳过绘制过程直接出结果,效率提升不是一点半点,但是少了慢慢绘制好图形的那种过程体验。要是想做动画效果,可以配合screen.ontimer搞定时刷新。有次我模拟万花筒效果,开了八个不同颜色的小龟同步作画,那场面跟数码烟花似的,就是特别吃CPU。
现在这个库已经不只是教学工具了,好些艺术家拿它做数字创作。之前见过有人用两千行Turtle代码临摹《星空》,把梵高的笔触转化成数学曲线。还有程序员在GitHub上开源了个项目,能用Turtle模拟水墨画的晕染效果,原理是在不同透明度图层叠加随机路径。下次你要是失眠,不妨试试用Turtle画曼陀罗,保证比数羊管用——就是容易画着画着天亮了。
我这段代码主要是用Python的Turtle库实现了一个带有彩虹渐变效果的螺旋花图案,结合了数学规律与艺术美感。下面三部分给你讲讲其核心逻辑和创意亮点:
一、视觉基础搭建我们的代码开头首先通过turtle.Screen()创建了黑色背景的画布,能让彩色线条更突出。画笔设置pen.speed(0)让绘图速度最大化,避免动画延迟,这在绘制复杂图形时尤为重要。
彩虹渐变效果的关键在于generate_colors函数:通过colorsys.hsv_to_rgb将色相(Hue)均匀分布在0-1之间,生成连续的彩虹色谱。这里会更聚焦于循环渐变的实现。
二、动态螺旋生成主循环for i in range(360)是图案成型的核心,每次循环包含三个关键动作:
色彩流转:pen.pencolor(colors[i % len(colors)])让颜色按预生成的彩虹序列循环,每完成360次绘制后颜色会重新渐变,形成无缝衔接的彩色轨迹 螺旋扩展:pen.forward(i * 0.5)让画笔移动距离随循环次数递增,产生由内向外扩展的螺旋路径。几何叠加:pen.left(59)配合pen.circle(10, steps=3)实现了双重旋转效果——每次左转59度形成主螺旋结构,同时绘制等边三角形成次级装饰纹理。这种复合绘图手法比单纯的螺旋花更富层次感特别值得注意的是选择59度作为旋转角度:这个质数与360的最大公约数为1,能确保花瓣均匀分布且不重复叠加(若换成61/73等其它质数会产生不同密度的花型,如代码注释建议的创意延展)
三、数学与艺术的结合代码通过i * 0.5的线性增长与59度黄金旋转角的组合,暗合斐波那契螺旋的数学规律。而色彩系统采用HSV模式而非RGB直接调色,使得颜色过渡更符合人眼感知规律。最终效果是:每个螺旋节点都携带一个彩色三角标记,当600余个标记以特定角度错位叠加时,视觉上便融合成连续流畅的花瓣曲线。
相较于基础螺旋实现,这段代码通过三项创新提升了艺术表现力:
动态颜色映射替代固定随机色主螺旋线+装饰性几何元素的复合结构精心选择的旋转参数确保图案对称性运行该代码,你会看到一个黑色宇宙中渐次绽放的彩虹螺旋花,每个三角标记犹如星空中的璀璨星辰,整体既呈现数学的精确性,又饱含有机生命的生长韵律。想要体验不同风格,可尝试修改这两个参数:
将59改为61/73等质数(改变花瓣密度)调整circle(10, steps=3)中的边数(例如改为5边形)import turtle
import random
import colorsys
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("AI 风格画图器 - 螺旋花")
pen = turtle.Turtle()
pen.speed(0)
pen.width(2)
pen.hideturtle()
def generate_colors(n):
colors = []
for i in range(n):
hue = i / n
r, g, b = colorsys.hsv_to_rgb(hue, 1, 1)
colors.append((r, g, b))
return colors
turtle.colormode(1.0)
colors = generate_colors(360)
for i in range(360):
pen.pencolor(colors[i % len(colors)])
pen.forward(i * 0.5)
pen.left(59)
pen.circle(10, steps=3)
turtle.done()
python
也尝试了一下能不能画一个类似梵高的星空的效果,我笑喷了。

import turtle
import random
import colorsys
screen = turtle.Screen()
screen.bgcolor("midnight blue")
screen.title("AI风格《星空》")
pen = turtle.Turtle()
pen.speed(0)
pen.width(2)
pen.hideturtle()
turtle.colormode(255)
def draw_stars(num):
star = turtle.Turtle()
star.hideturtle()
star.speed(0)
for _ in range(num):
x = random.randint(-300, 300)
y = random.randint(-200, 200)
size = random.randint(2, 6)
brightness = random.randint(200, 255)
star.penup()
star.goto(x, y)
star.pendown()
star.color((brightness, brightness, 150))
star.begin_fill()
star.circle(size)
star.end_fill()
def draw_spiral(x, y, size, turns, color_func):
pen.penup()
pen.goto(x, y)
pen.pendown()
for i in range(turns):
pen.pencolor(color_func(i))
pen.forward(i * size / turns)
pen.left(30)
def draw_wave_lines():
wave = turtle.Turtle()
wave.hideturtle()
wave.speed(0)
wave.pensize(2)
wave.color("lightblue")
for i in range(-300, 300, 60):
wave.penup()
wave.goto(i, random.randint(-50, 50))
wave.pendown()
for j in range(30):
wave.forward(5)
wave.left(5)
def yellowish(i):
return (255, 255 - i % 100, 100 + i % 155)
def bluish(i):
return (100 + i % 100, 100 + i % 150, 255)
draw_stars(80)
draw_wave_lines()
draw_spiral(-50, 100, 200, 60, bluish)
draw_spiral(150, 150, 100, 40, yellowish)
draw_spiral(-200, 150, 50, 30, yellowish)
turtle.done()
python
相关知识
Python的turtle库实现简单的星空
使用Python Turtle库带你玩转创意绘图(画个心,写个花)
python用turtle画玫瑰花
python的turtle画个玫瑰花
Python实现动态玫瑰花绘制教程:从基础语法到图形库应用
画个心,写个花!Python Turtle库带你玩转创意绘图!
Python turtle库绘图 简单实战案例
Python的turtle库绘图
Python用turtle库绘制图形——漂亮的玫瑰
情人节献礼:用Python turtle函数绘制动态玫瑰花
网址: Python魔法——Turtle库实现螺旋花艺术 https://m.huajiangbk.com/newsview2566514.html
| 上一篇: python用print输出不同 |
下一篇: 实践《自然语言处理Python进 |