またブログ改装した。
ページを読み込むたびにランダムで色が変わるデザインにするために
- 彩度と明度は固定
- 色相は240°付近でランダム
という色を生成してくれるメソッドが欲しくて、 でもそんなのRGBでやってたら面倒臭すぎて死んじゃうのでHSV色空間で色を生成してRGBに変換するようにした。
そのために書いた HSV→RGB変換メソッドがこちら。
# 色相(H)は 0〜360,彩度(S)と明度(V)は0〜255 def hsv2rgb(h, s, v) h, s, v = [ h.to_f/60.0, s.to_f, v.to_f ] hi = h.to_i % 6 f = h - hi p = v * (1.0 - s/255.0) q = v * (1.0 - f*s/255.0) t = v - q r, g, b = begin case hi when 0 then [ v, t, p ] when 1 then [ q, v, p ] when 2 then [ p, v, t ] when 3 then [ p, q, v ] when 4 then [ t, p, v ] when 5 then [ v, p, q ] end end return [ r, g, b ].map{|c| c.to_i } end
それだけ。