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