数値を色で表現する Ruby メソッド

ほら、アメダスとかサーモグラフィみたいな。

class Float
	# -1〜1 の数値を #rrggbb 形式の色で表現する
	def torgb
		s = 0.75	# 彩度
		v = 1.00	# 明るさ
		h = (self <= -1) ? 359.9999 : (self > 1) ? 0 : 180.0 - self * 180.0	# 色相
		i = (h / 60).floor
		f = (h / 60) - i
		m = v * (1 - s)
		n = v * (1 - s * f)
		k = v * (1 - s * (1 - f))
		case i
			when 0 then r = v; g = k; b = m;
			when 1 then r = n; g = v; b = m;
			when 2 then r = m; g = v; b = k;
			when 3 then r = m; g = n; b = v;
			when 4 then r = k; g = m; b = v;
			when 5 then r = v; g = m; b = n;
		end
		sprintf("#%02x%02x%02x", r * 255, g * 255, b * 255)
	end
end