Why not adopt me?
NAME
Grid::Coord - abstract representation and manipulation of points and rectangles
SYNOPSIS
my
$point1
= Grid::Coord->new(5,4);
# point(y=>5, x=>4)
my
$rect1
= Grid::Coord->new(2,
3
=> 6,5);
# rectangle
"TRUE"
if
$rect1
->contains(
$point1
);
my
$rect2
= Grid::Coord->new(3,
4
=> 5,5);
# another rectangle
my
$rect3
=
$rect1
->overlap(
$rect2
)
# (3,4 => 5,5)
$rect3
->stringify;
# "(3,4 => 5,5)"
$rect3
;
# "(3,4 => 5,5)"
"TRUE"
if
$rect3
->equals(Grid::Coord->new(3,
4
=> 5,5));
"TRUE"
if
$rect3
== Grid::Coord->new(3,
4
=> 5,5);
DESCRIPTION
Manage points or rectangles on a grid. This is generic, and could be used for spreadsheets, ascii art, or other nefarious purposes.
USAGE
Constructor
Grid->Coord->new(
$y
,
$x
);
Grid->Coord->new(
$min_y
,
$min_x
,
$max_y
,
$max_x
);
Accessing coordinates
The min_y
, min_x
, max_y
, max_x
functions:
$coord
->max_x;
# get value
$coord
->min_x(4);
# set value to 4
Relationships with other Coords
$c3
=
$c1
->overlap(
$c2
);
"TRUE"
if
$rect1
->contains(
$rect2
);
"TRUE"
if
$rect1
->equals(
$rect2
);
Overloaded operators
Four operators are overloaded:
the stringification operator
So that
print $coord
does something reasonablethe equality operator
so that
if ($coord1 == $coord2)
does the right thing.the add operator
So that
$c1 + $c2
is a synonym for$c1-
offset($c2)>the subtract operator
So that
$c1 - $c2
is a synonym for$c1-
delta($c2)>
Iterating
The iterator returns a Grid::Coord object for each cell in the current Grid::Coord range.
my
$it
=
$grid
->cell_iterator;
# or ->cell_iterator_rowwise
# my $it = $grid->cell_iterator_colwise; # top to bottom
while
(
my
$cell
=
$it3
->()) {
# do something to $cell
}
You can also iterate columns/rows with $grid->cells_iterator $grid->rows_iterator
BUGS
None reported yet.
SUPPORT
From the author.
AUTHOR
osfameron
@cpan
.org
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
SEE ALSO
perl(1).