Algorithm-QuadTree
view release on metacpan or search on metacpan
lib/Algorithm/QuadTree/PP.pm view on Meta::CPAN
package Algorithm::QuadTree::PP;
$Algorithm::QuadTree::PP::VERSION = '0.5';
use strict;
use warnings;
use Exporter qw(import);
use Scalar::Util qw(weaken);
our @EXPORT = qw(
_AQT_init
_AQT_deinit
_AQT_addObject
_AQT_findObjects
_AQT_delete
_AQT_clear
);
# recursive method which adds levels to the quadtree
sub _addLevel
{
my ($self, $depth, $parent, @coords) = @_;
my $node = {
PARENT => $parent,
HAS_OBJECTS => 0,
AREA => \@coords,
};
weaken $node->{PARENT} if $parent;
if ($depth < $self->{DEPTH}) {
my ($xmin, $ymin, $xmax, $ymax) = @coords;
my $xmid = $xmin + ($xmax - $xmin) / 2;
my $ymid = $ymin + ($ymax - $ymin) / 2;
$depth += 1;
# segment in the following order:
# top left, top right, bottom left, bottom right
$node->{CHILDREN} = [
( run in 0.511 second using v1.01-cache-2.11-cpan-65fba6d93b7 )