使用Python的內建turtle庫畫彩虹

使用Python的內建turtle庫畫彩虹

這裡寫圖片描述

上圖是使用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顏色是個錯誤的顏色數值