NAME

Algorithm::RectanglesContainingDot - find rectangles containing a given dot

SYNOPSIS

use Algorithm::RectanglesContainingDot;

my $alg = Algorithm::RectanglesContainingDot->new;

for my $i (0 .. $num_rects) {
  $alg->add_rectangle($rname[$i], $rx0[$i], $ry0[$i], $rx1[$i], $ry1[$i]);
}

for my $j (0 .. $num_points) {
  my @rects_containing_dot_names = $alg->rectangles_containing_dot($px[$j], $py[$j]);
  ...
}

DESCRIPTION

Given a set of rectangles and a set of dots, the algorithm implemented in this modules finds for every dot, which rectangles contain it.

The algorithm complexity is O(R * log(R) * log(R) + D * log(R)) being R the number of rectangles and D the number of dots.

Its usage is very simple:

1) create and algorithm object:
$a = Algorithm::RectanglesContainingDot->new;
2) add the rectangles:
$a->add_rectangle($name, $x0, $y0, $x1, $y1);

Rectangles are identified by a name that can be any perl scalar (typically an integer or a string).

($x0, $y0) and ($x1, $y1) correspond to the coordinates of the left-botton and right-top vertices respectively.

3) call the search method for every dot:
@rects = $a->rectangles_containing_dot($x, $y)

Returns the names of the rectangles containing the dot ($x, $y).

SEE ALSO

Algorithm::RectanglesContainingDot_XS implements the same algorithm as this module in C/XS and so it is much faster. When available, this module will automatically load and use it.

AUTHOR

Salvador Fandiño, <sfandino@yahoo.com>

COPYRIGHT AND LICENSE

Copyright (c) 2007 by Salvador Fandino.

Copyright (c) 2007 by Qindel Formacion y Servicios SL.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.