Bitmap/Flood fill: Difference between revisions
Content added Content deleted
Line 2,600: | Line 2,600: | ||
class RGBColour |
class RGBColour |
||
def ==( |
def ==(other) |
||
values == |
values == other.values |
||
end |
end |
||
end |
end |
||
Line 2,609: | Line 2,609: | ||
current_colour = self[pixel.x, pixel.y] |
current_colour = self[pixel.x, pixel.y] |
||
queue = Queue.new |
queue = Queue.new |
||
queue. |
queue.enq(pixel) |
||
until queue.empty? |
until queue.empty? |
||
p = queue. |
p = queue.pop |
||
next unless self[p.x, p.y] == current_colour |
next unless self[p.x, p.y] == current_colour |
||
Line 2,621: | Line 2,621: | ||
%i[north south].each do |direction| |
%i[north south].each do |direction| |
||
n = neighbour(q, direction) |
n = neighbour(q, direction) |
||
queue. |
queue.enq(n) if self[n.x, n.y] == current_colour |
||
end |
end |
||
q = neighbour(q, :east) |
q = neighbour(q, :east) |
||
Line 2,657: | Line 2,657: | ||
JRubyArt is a port of Processing to the ruby language |
JRubyArt is a port of Processing to the ruby language |
||
<lang ruby> |
<lang ruby># holder for pixel coords |
||
# holder for pixel coords |
|||
Pixel = Struct.new(:x, :y) |
Pixel = Struct.new(:x, :y) |
||