#! perl -slw use strict; use Data::Dump qw[ pp ]; $Data::Dump::MAX_WIDTH = 200; use Math::Geometry::Voronoi; my @points = map{ my $y = $_; map [ $_, $y ], map $_ * 100, 1 .. 9; } map $_ * 100, 1 .. 7; my $geo = Math::Geometry::Voronoi->new( points => \@points ); $geo->compute; my @geoPolys = $geo->polygons; pp \@geoPolys; #### C:\test>voronoi [ ## {**** duplicates ****} {**** duplicates ****} [10, [250, 250], [250, 250], [250, 150], [150, 150], [150, 150], [150, 250]], [11, [350, 250], [350, 250], [350, 150], [250, 150], [250, 150], [250, 250]], [12, [450, 250], [450, 250], [450, 150], [350, 150], [350, 150], [350, 250]], [13, [550, 250], [550, 250], [550, 150], [450, 150], [450, 150], [450, 250]], [14, [650, 250], [650, 250], [650, 150], [550, 150], [550, 150], [550, 250]], [15, [750, 250], [750, 250], [750, 150], [650, 150], [650, 150], [650, 250]], [16, [850, 250], [850, 250], [850, 150], [750, 150], [750, 150], [750, 250]], [19, [250, 350], [250, 350], [250, 250], [150, 250], [150, 250], [150, 350]], [20, [350, 350], [350, 350], [350, 250], [250, 250], [250, 250], [250, 350]], [21, [450, 350], [450, 350], [450, 250], [350, 250], [350, 250], [350, 350]], [22, [550, 350], [550, 350], [550, 250], [450, 250], [450, 250], [450, 350]], [23, [650, 350], [650, 350], [650, 250], [550, 250], [550, 250], [550, 350]], [24, [750, 350], [750, 350], [750, 250], [650, 250], [650, 250], [650, 350]], [25, [850, 350], [850, 350], [850, 250], [750, 250], [750, 250], [750, 350]], [28, [250, 450], [250, 450], [250, 350], [150, 350], [150, 350], [150, 450]], [29, [350, 450], [350, 450], [350, 350], [250, 350], [250, 350], [250, 450]], [30, [450, 450], [450, 450], [450, 350], [350, 350], [350, 350], [350, 450]], [31, [550, 450], [550, 450], [550, 350], [450, 350], [450, 350], [450, 450]], [32, [650, 450], [650, 450], [650, 350], [550, 350], [550, 350], [550, 450]], [33, [750, 450], [750, 450], [750, 350], [650, 350], [650, 350], [650, 450]], [34, [850, 450], [850, 450], [850, 350], [750, 350], [750, 350], [750, 450]], [37, [250, 550], [250, 550], [250, 450], [150, 450], [150, 450], [150, 550]], [38, [350, 550], [350, 550], [350, 450], [250, 450], [250, 450], [250, 550]], [39, [450, 550], [450, 550], [450, 450], [350, 450], [350, 450], [350, 550]], [40, [550, 550], [550, 550], [550, 450], [450, 450], [450, 450], [450, 550]], [41, [650, 550], [650, 550], [650, 450], [550, 450], [550, 450], [550, 550]], [42, [750, 550], [750, 550], [750, 450], [650, 450], [650, 450], [650, 550]], [43, [850, 550], [850, 550], [850, 450], [750, 450], [750, 450], [750, 550]], [46, [250, 650], [250, 650], [250, 550], [150, 550], [150, 550], [150, 650]], [47, [350, 650], [350, 650], [350, 550], [250, 550], [250, 550], [250, 650]], [48, [450, 650], [450, 650], [450, 550], [350, 550], [350, 550], [350, 650]], [49, [550, 650], [550, 650], [550, 550], [450, 550], [450, 550], [450, 650]], [50, [650, 650], [650, 650], [650, 550], [550, 550], [550, 550], [550, 650]], [51, [750, 650], [750, 650], [750, 550], [650, 550], [650, 550], [650, 650]], [52, [850, 650], [850, 650], [850, 550], [750, 550], [750, 550], [750, 650]], ]