1. 程式人生 > >使用Python的內建turtle庫畫彩虹

使用Python的內建turtle庫畫彩虹

這裡寫圖片描述

上圖是使用turtle庫繪製的彩虹。程式的關鍵點是將畫筆的顏色漸變,再通過不斷微小的角度轉換繪製成彩虹
計算機中的顏色空間模型是典型的RGB模型,R,G,B分別對應光的三原色,色相是由RGB三個引數共同決定的。
那麼如果想通過一個引數來改變色相,應該使用HSV顏色模型。HSV對於顏色空間的描述更貼近人類感知,HSV顏色模型分別由三個向量H(色相),S(飽和度),V(明度) 所組成,因此可以通過H的漸變而得到對應RGB顏色的漸變值給予畫筆,從而簡單的達到繪製彩虹的目的

那麼有了轉換公式,可以將其實現為python程式碼:
這裡寫圖片描述

程式主要需要解決的問題解決了,接下來就是描述繪製的過程。彩虹是一個類似圓弧的形狀,那麼要達到上圖的彩虹形狀,就可以將畫筆置於左下角,以這個點畫一個大圓,以至於在視窗中僅能顯示一個圓弧。彩虹形成的漸變過程即不斷畫圓+改變顏色的過程
這裡寫圖片描述

for迴圈的過程中,顏色漸變效果是通過累加hue(色相)實現的,但要注意的一點是,迴圈的次數與累加量的乘積,也就是總的累加量不可以超過360,否則會報錯,這是因為在HSV顏色模型將顏色描述為圓錐上的點,色相H即使圍繞圓錐中心軸旋轉的角度,因此如果最終的累加量超過的這個上限會導致轉換運算得出的RGB顏色是個錯誤的顏色數值

相關推薦

使用Pythonturtle彩虹

上圖是使用turtle庫繪製的彩虹。程式的關鍵點是將畫筆的顏色漸變,再通過不斷微小的角度轉換繪製成彩虹 計算機中的顏色空間模型是典型的RGB模型,R,G,B分別對應光的三原色,色相是由RGB三個引數共同決定的。 那麼如果想通過一個引數來改變色相,應該使用

使用Python小豬佩奇(Pythonturtle

這座標要算多久???尬笑!?turtle(烏龜)庫,在畫布上,預設有一個座標原點為畫布中心的座標軸, 座標原點上有一隻面朝x軸正方向小烏龜. 這裡我們描述小烏龜時使用了兩個詞語:座標原點(位置),面朝x軸正方向(方向), turtle繪圖中, 就是使用位置方向描述小烏龜(畫筆

Urllibpython的http請求

1、四個模組: request error parse robotparser 2、urlopen(url, data, timeout) 傳送請求 get請求無data; post請求有data 3、read() 獲取響應體的內容 4、Handl

Python Turtleb站logo(張野 付博林組)

bili goto 一點 fill orm pre rtl scree get 視頻就在這裏 由於不知道很多函數只等自己一點一點的試??嗶哩嗶哩 (゜-゜)つロ 幹杯~ import turtle turtle.speed(6) turtle.screensize

如何用pythonturtle一個玫瑰

#RoseDraw.py import turtle as t # 定義一個曲線繪製函式 def DegreeCurve(n, r, d=1): for i in range(n): t.left(d) t.circle(r, abs(d)) # 初始位

Python 模組turtle模組的使用

這是一個可以在畫布上移動畫圖的函式,如果學過計算機語言,這些都是很容易理解的,自己搗鼓著玩吧 import turtle     //首先需要引入這個模組 t = turtle.Pen()  //佈置畫布 t.forward(200)  //讓畫筆往前移動200,這個是有

Python語言程式設計之二--用turtle圍棋棋盤和正、餘弦函式圖形

這篇筆記依然是在做《Python語言程式設計》第5章迴圈的習題。其中有兩類問題需要記錄下來。 第一是如何畫圍棋棋盤。圍棋棋盤共有19縱19橫。其中,位於(0,0)的星位叫天元,其餘8個星位座標分別是:(-6,6),(0,6),(6,6),(-6,0),(6,0),(-6,-6),(0,-6),(6,-6)。

Python turtle小豬佩奇

作者github.com/Monster12138/下載安裝Python環境,將原始碼儲存為.py格式原始碼如下:# coding:utf-8import turtle as tt.pensize(4)t.hideturtle()t.colormode(255)t.color

原來python還能這麽用,使用turtle出漂亮的

shadow 循環 eat blog tps 多重 簡單 程序 成就感 Tuttle庫是python內置庫,今天就利用它畫出各種漂亮的圖! 如何畫出多重五角星? 效果展示如下:是不是很酷呢,下面還有更酷的玩法。多重五角星的代碼比較簡單,用到了循環跟turtle庫一些簡單的方

python函數

call src print true bool nco cnblogs color 都是 #abs 求絕對值 print(abs(-1)) #all #判斷函數內部的布爾值,如果都是Trun則返回true #空是True print(all([1,2,‘a‘,Non

python--屬性

redirect log tca init subject 自定義 att 說明 技術 一、常用內建屬性 常用專有屬性說明觸發方式 __init__ 構造初始化函數 創建實例後,賦值時使用,在__new__後 __new__ 生成實例所需屬性 創建實例時

python中的turtle繪制圖形

坐標軸 src 完成 弧度 tle backward 像素 font 多邊形 1. 前奏: 在用turtle繪制圖形時,需要安裝對應python的解釋器以及IDE,我安裝的是pycharm,在安裝完pycharm後,在pycharm安裝相應庫的模塊,繪圖可以引入turtle

使用Python中的Turtle繪制簡單的圖形

Python Turtle Turtle圖形庫 Turtle庫是Python內置的圖形化模塊,屬於標準庫之一,位於Python安裝目錄的lib文件夾下,常用函數有以下幾種: 畫筆控制函數 penup():擡起畫筆; pendown():落下畫筆; pensize(width):畫筆寬度; pe

Python學習日記(2)Python集合及操作

進行 添加 依然 修改 lis ever 原來 合並 and   列表  列表是零個或多個Python對象的一個序列,這些對象通常稱之為項;  列表示例: [] #An empty list ["test"] #A list of one string

python 方法fromkeys()創一個具有相同元素值的字典

python rom 一個 key 相同元素 fromkeys from code none >>> ddict = {}.fromkeys((‘x‘,‘y‘),-1) >>> ddict {‘y‘: -1, ‘x‘: -1} >&

Python函數二

cti obj 字符串 聲明 內部 元素 clas 解決 true 內置函數二: 1.lambda (匿名函數) 為了解決一些簡答的需求而設計的一句話函數。不需要def來聲明。 def func(n):

Python函數reduce()用法

red .com 必須 ret 用法 文章 輸出結果 序列 下一個 reduce把一個函數作用在一個序列[x1, x2, x3...]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算,下面講述Python內建函數reduce()用法。

Python進位制轉換函式(實現16進位制和ASCII轉換)

在進行wireshark抓包時你會發現底端視窗報文內容左邊是十六進位制數字,右邊是每兩個十六進位制轉換的ASCII字元,這裡使用Python程式碼實現一個十六進位制和ASCII的轉換方法。 hex() 轉換一個整數物件為十六進位制的字串 >>> hex(16) '0x10' >&

Python包】csv模組用法

一、概述 CSV(逗號分隔符)檔案是表格與資料庫操作之中最常用的輸入輸出格式。在RFC4180中的檔案描述標準對CSV格式進行規範之前,CSV格式檔案就已經被應用了很多年了。而缺乏合適的格式描述規範意味著不同應用的輸入輸出格式會有著細微的差別。因此在從不同源生成這些檔案的時候,這些差別相

Python包】re.sub功能

之前要用到正則替換,所以就用到了sub這個功能,看著doc裡寫的雲裡霧裡的,就自己做了做實驗 re.sub(pattern, repl, string, count=0, flags=0) 先說功能 Return the string obtained by replaci