Voronoi diagram: Difference between revisions

Content deleted Content added
Added J solution
add Ruby
Line 572:
=== Sample Output: ===
[[File:Voronoi_python.png|500px|thumb|center|Voronoi Diagram in Python]]
 
=={{header|Ruby}}==
Uses [[Raster graphics operations/Ruby]]
[[File:voronoi_rb.png|thumb|right|Sample output from Ruby program]]
<lang ruby>load 'raster_graphics.rb'
 
class ColourPixel < Pixel
def initialize(x, y, colour)
@colour = colour
super x, y
end
attr_accessor :colour
 
def distance_to(px, py)
Math::sqrt( (px - x)**2 + (py - y)**2 )
end
end
 
width, height = 300, 200
npoints = 20
pixmap = Pixmap.new(width,height)
 
@bases = npoints.times.collect do |i|
ColourPixel.new(
3+rand(width-6), 3+rand(height-6), # provide a margin to draw a circle
RGBColour.new(rand(255), rand(255), rand(255))
)
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>
 
=={{header|Tcl}}==