class WSLight::Set::RainbowSet
Creates a moving rainbow (actually a color circle)
Public Instance Methods
frame()
click to toggle source
# File lib/ws_light/set/rainbow_set.rb, line 15 def frame next_frame set = [] @length.times do |i| set << pixel(i) end set += set.reverse if type == :double set end
init()
click to toggle source
# File lib/ws_light/set/rainbow_set.rb, line 7 def init @frequency = Math::PI / @length end
next_frame()
click to toggle source
# File lib/ws_light/set/rainbow_set.rb, line 11 def next_frame @frame_count += 1 end
pixel(number)
click to toggle source
# File lib/ws_light/set/rainbow_set.rb, line 28 def pixel(number) number = @full_length - 1 - number if number >= @length x = @frequency * (number + @frame_count) Color.new( (Math.sin(x)**2 * 127), (Math.sin(x + 2.0 * Math::PI / 3.0)**2 * 127), (Math.sin(x + 4.0 * Math::PI / 3.0)**2 * 127) ) end