使用Python的内置turtle库画彩虹

使用Python的内置turtle库画彩虹_第1张图片

上图是使用turtle库绘制的彩虹。程序的关键点是将画笔的颜色渐变,再通过不断微小的角度转换绘制成彩虹
计算机中的颜色空间模型是典型的RGB模型,R,G,B分别对应光的三原色,色相是由RGB三个参数共同决定的。
那么如果想通过一个参数来改变色相,应该使用HSV颜色模型。HSV对于颜色空间的描述更贴近人类感知,HSV颜色模型分别由三个向量H(色相),S(饱和度),V(明度) 所组成,因此可以通过H的渐变而得到对应RGB颜色的渐变值给予画笔,从而简单的达到绘制彩虹的目的

下面给出HSV转换为RGB的数学公式(源自http://blog.csdn.net/jiangxinyu/article/details/8000999)
使用Python的内置turtle库画彩虹_第2张图片

那么有了转换公式,可以将其实现为python代码:
使用Python的内置turtle库画彩虹_第3张图片

程序主要需要解决的问题解决了,接下来就是描述绘制的过程。彩虹是一个类似圆弧的形状,那么要达到上图的彩虹形状,就可以将画笔置于左下角,以这个点画一个大圆,以至于在窗口中仅能显示一个圆弧。彩虹形成的渐变过程即不断画圆+改变颜色的过程
使用Python的内置turtle库画彩虹_第4张图片

for循环的过程中,颜色渐变效果是通过累加hue(色相)实现的,但要注意的一点是,循环的次数与累加量的乘积,也就是总的累加量不可以超过360,否则会报错,这是因为在HSV颜色模型将颜色描述为圆锥上的点,色相H即使围绕圆锥中心轴旋转的角度,因此如果最终的累加量超过的这个上限会导致转换运算得出的RGB颜色是个错误的颜色数值

你可能感兴趣的:(萌新日记,python,rgb,计算机)