http://qs1969.pair.com?node_id=189945


in reply to Perl Spots

Some explaining:

A finite number of Voronoi points (v-points) are distributed on a plane. Each v-point has an associated neighborhood (v-hood). The v-hood is the set of points nearer to the v-point than any other v-point.

To shade the v-hoods, I find the distances to the nearest two v-points and divide the smallest distance by the next smallest distance ($best / $good). This number will always be between 0 and 1. Points in the middle of a v-hood will be close to 0, points near the edge will be close to 1, being nearly the same distance from both points.

Multiplying by 10 and using the integer result gives an index to the @CHARS array.

Random v-points are added in the square with corners at (0,0) and (1,1). To achieve wrapping additional v-points are added in the eight surrounding squares.

So for v-point (.2, .3), these points are added:
(-.8, -.7) (-.8, .3) (-.8, 1.3)
( .2, -.7) ( .2, .3) ( .2, 1.3)
(1.2, -.7) (1.2, .3) (1.2, 1.3)

To see just the borders use:

my @CHARS = split('', ' #');
For stripes:
my @CHARS = split('', ' # # # # #');