Voronoi diagram: Difference between revisions

m
Line 2,474:
Uses [[Raster graphics operations/Ruby]]
[[File:voronoi_rb.png|thumb|right|Sample output from Ruby program]]
<lang ruby>load# 'raster_graphics.rb'frozen_string_literal: true
 
require_relative 'raster_graphics'
 
class ColourPixel < Pixel
Line 2,484 ⟶ 2,486:
 
def distance_to(px, py)
Math::.hypot(px - x, py - y)
end
end
 
width, height = 300, 200
height = 200
npoints = 20
pixmap = Pixmap.new(width, height)
 
@bases = npoints.times.collect do |i_i|
ColourPixel.new(
3 + rand(width - 6), 3 + rand(height - 6), # provide a margin to draw a circle
RGBColour.new(rand(256), rand(256), rand(256))
)
end
 
pixmap.each_pixel do |x, y|
nearest = @bases.min_by { |base| base.distance_to(x, y) }
pixmap[x, y] = nearest.colour
end
 
@bases.each do |base|
pixmap[base.x, base.y] = RGBColour::BLACK
pixmap.draw_circle(base, 2, RGBColour::BLACK)
end
 
pixmap.save_as_png("'voronoi_rb.png"')</lang>
 
{{libheader|RubyGems}}
Anonymous user