上图是使用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代码:

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

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

使用Python的内置turtle库画彩虹相关推荐

  1. 用python画小黄人步骤图-学Python画画:应用Turtle库画一个蠢萌的小黄人

    学Python画画:应用Turtle库画一个蠢萌的小黄人 前言: 还记得小黄人哪只蠢萌蠢萌的单眼小黄人?就是喜欢做什么事都喜欢逞能的那只,下面用Python来实现一下,正在逃跑的小黄人.进群:7003 ...

  2. 用python画小黄人-学Python画画:应用Turtle库画一个蠢萌的小黄人

    学Python画画:应用Turtle库画一个蠢萌的小黄人 前言: 还记得小黄人哪只蠢萌蠢萌的单眼小黄人?就是喜欢做什么事都喜欢逞能的那只,下面用Python来实现一下,正在逃跑的小黄人.进群:7003 ...

  3. Python -- 大作业 — 使用turtle库画皮卡丘

    使用python的turtle库画皮卡丘 一.使用环境 在这里,我使用的是python 3.8.5版本的IDLE(也可以使用其他3.0以上版本,PyCharm也是可以的). 二.内容介绍 1.主要方法 ...

  4. Python 内置turtle模块 —— 画一面国旗(基础篇)

    # 用 turtle模块 画一面国旗""" 思考:1.怎么导入和使用 turtle模块?2.你对 turtle模块 了解有多少?介绍:1.turtle模块 是一个很强大的 ...

  5. python画画用哪库好_学Python画画:应用Turtle库画一个蠢萌的小黄人

    t.pensize(4) t.speed(10) 设置画笔的大小.画图的速度,可以改变数值来提升画笔的速度. python学习关注我们企鹅qun: 8393 83765 各类入门学习资料免费分享哦! ...

  6. turtle python tkinter_【案例】 什么?idle 中竟然有内置 turtle 样例?(paint)

    案例介绍 我打算开启一个新的方向-- turtle 库案例. 在我们下载安装完毕 Python3 后,在搜索(查找)框中输入 idle.exe,就能够打开系统内置的 Python 开发环境了.不知道有 ...

  7. 用Python Turtle库画一个萌化的蜘蛛侠

    你是从什么时候开始喜欢上漫威电影的?美国队长,钢铁侠,雷神? 我先入坑的是因为看了蜘蛛侠,小时候看完就幻想着什么时候自己也能成为一个英雄,我觉得第一代蜘蛛侠刻画得是最好的,也是给我印象最深刻的一代蜘蛛 ...

  8. 用python的Turtle库画一个笑脸

    用python的Turtle库画一个笑脸 最近刚了解到python的turtle库,就简单的尝试一下,画一个笑脸. 效果图: 效果图看起来和原图的差别还是有点大,但是没关系,这只是一个尝试而已. 附上 ...

  9. 使用python的turtle库画表情包

    使用python的turtle库画表情包 话不多说,先上效果图,然后是代码 代码如下: import turtleturtle.penup() turtle.goto(-80,20) turtle.c ...

最新文章

  1. HitFilm Pro 12中文版
  2. 解决方案 | office导出为pdf并加密
  3. 爬取网页的通用代码框架
  4. Beyond Compare 3.3.8 build 16340 + Key
  5. 以太坊搭建联盟链_区块链知识普及:什么是以太坊
  6. python安装和更新pip
  7. Xcode之断点调试
  8. 数据是以什么形式存放在计算机中的?计算机与进制 (进制转换原则)
  9. truffle和remix区别
  10. Vue 双向数据绑定原理分析
  11. office2007中文版下载和功能介绍
  12. 手机归属地查询 API 接口
  13. ExoPlayer之SampleQueue
  14. 解决Python爬取百度页面出现中文乱码问题
  15. Unity 3D光源-Directional平行光/逆光效果,光晕详解、教程
  16. java实现简单的LUR算法
  17. NETCore项目报错 An error occurred while starting the application
  18. 用python通过selenium自动化测试抓取天猫店铺数据
  19. C++学习之路(六),C++primer plus 第七章 函数--C++的编程模块
  20. 【HTML】三种加载动画

热门文章

  1. 【Canvas】js用canvas绘制一个钟表时钟动画效果
  2. JS通过window location href下载文件
  3. Redis(Remote Dictionary Server)学习笔记
  4. 手把手写深度学习(12):CycleGANs伟大的风格迁移理论基础篇
  5. INTP-A的男生适合什么样的MBIT的对象
  6. linux 远程 更新 软件下载,rdesktop下载-rdesktop(Unix/Linux下面的远程桌面客户端)下载 v1.8.2 官方最新版-IT猫扑网...
  7. pythonvue自动化_Genesis
  8. 基于python的种子搜索网站(二)开发过程
  9. idea热键冲突之打开Settings
  10. 贝索斯登顶世界首富告诉我们什么?