Voronoi diagram: Difference between revisions

Line 2,517:
{{libheader|JRubyArt}}
JRubyArt is a port of processing to ruby
<lang ruby># frozen_string_literal: true
# frozen_string_literal: true
 
Tile = Struct.new(:x, :y, :color) do
attr_reader :colors, :positions
def sq_dist(a, b)
(x - a)**2 + (y - b)**2
end
end
 
attr_reader :colors, :positionstiles
 
def settings
Line 2,529 ⟶ 2,534:
sketch_title 'Voronoi Diagram'
load_pixels
color_mode(HSB, 360, 1, 1.0)
@colorstiles = generate_colorsgenerate_tiles(30)
@positions = generate_positions(30)
draw_voronoi
update_pixels
Line 2,537 ⟶ 2,541:
end
 
def generate_colorsgenerate_tiles(num)
(0..num).map { colorTile.new(rand(360width), rand(height), color(rand, 1.0, 1.0)) }
end
 
def generate_positions(num)
(0..num).map { Vec2D.new(rand(width), rand(height)) }
end
 
def draw_voronoi
grid(width, height) do |x, y|
posclosest = Vec2Dtiles.newmin_by { |tile| tile.sq_dist(x, y) }
pixels[x + y * width] = colors[index]closest.color
closest = positions.min_by { |posn| posn.dist(pos) }
index = positions.index closest
pixels[x + y * width] = colors[index]
end
end
 
def draw_voronoi_centers
positionstiles.each do |poscenter|
no_stroke
fill 0
ellipse(poscenter.x, poscenter.y, 4, 4)
end
end
 
 
</lang>
Anonymous user