Plasma effect: Difference between revisions

m
No edit summary
Line 1,484:
JRubyArt is a port of Processing to the ruby language
<lang ruby>
attr_reader :buffer, :palette, :r, :g, :b, :rd, :gd, :bd, :dim
 
def settings
Line 1,491:
 
def setup
sketch_title 'Plasma Effect'
frame_rate 1525
@r = 42
@g = 84
@b = 126
@rd = true if r > 128
@buffer = Array.new(width * height)
@gd = true if g > 128
@bd = true if b > 128
@dim = width * height
@buffer = Array.new(width * heightdim)
grid(width, height) do |x, y|
buffer[x + y * width] = (
Line 1,503 ⟶ 1,507:
(128 + (128 * cos(y / 32.0))) +
(128 + (128 * sin(Math.hypot(x, y) / 32.0)))
) / 4
).to_i
end
load_pixels
Line 1,510 ⟶ 1,514:
 
def draw
@rd = true if r > 128
if rd
@r -= 1
@rd = false if r.negative?
else
@r += 1
@rd = true if r > 128
end
@rd = false if r.negative?
@gd = true if g > 128
if gd
@g -= 1
@gd = false if g.negative?
else
@g += 1
@gd = true if g > 128
end
@gd = false if g.negative?
@bd = true if b > 128
if bd
@b -= 1
@bd = false if b.negative?
else
@b += 1
@bd = true if b > 128
end
@palette = (0..128127).map do |col|
@bd = false if b.negative?
s1 = sin(col * Math::PI / 25)
@palette = (0..128).map do |col|
s_1s2 = sin(col * Math::PI / 2550 + Math::PI / 4)
s_2color(r =+ sin(cols1 * Math::PI128, /g 50+ s2 * 128, b + Math::PIs1 /* 4128)
color(r + s_1 * 128, g + s_2 * 128, b + s_1 * 128)
end
buffer.lengthdim.times do |iidx|
 
pixels[iidx] = palette[(buffer[iidx] + frame_count) & 127]
buffer.length.times do |i|
pixels[i] = palette[(buffer[i] + frame_count) & 127]
end
update_pixels
end
 
</lang>
 
Anonymous user