Sha256: 97f74b432c2be94baf2287240e3901c81bf56adfd4b7de2bfa94bd9f9d7c5d7a
Contents?: true
Size: 1.18 KB
Versions: 1
Compression:
Stored size: 1.18 KB
Contents
module Photomosaic module Color class RGB attr_reader :red, :green, :blue def initialize(red, green, blue) @red = red @green = green @blue = blue end def max @max ||= [@red, @green, @blue].max end def min @min ||= [@red, @green, @blue].min end def to_hsv HSV.new(hue, saturation, value) end def calculate_distance(rgb) Math.sqrt(squares_array(rgb).inject(&:+)) end private def hue return 0 if max == min _hue = case max when @red ((@green - @blue).to_f / (max - min)) % 6 when @green (@blue - @red).to_f / (max - min) + 2 else (@red - @green).to_f / (max - min) + 4 end (_hue * 60).to_i end def saturation max == 0 ? 0 : (max - min).to_f / max * 100 end def squares_array(rgb) [ (self.red - rgb.red)**2, (self.green - rgb.green)**2, (self.blue - rgb.blue)**2 ] end def value (max * 100).to_f / 256 end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
photomosaic-0.0.1 | lib/photomosaic/color/rgb.rb |