ほとラボ

It works!

HSV → RGB の変換をする

またブログ改装した。

ページを読み込むたびにランダムで色が変わるデザインにするために

  • 彩度と明度は固定
  • 色相は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

それだけ。