Algorithm-Shape-RandomTree
view release on metacpan or search on metacpan
SYNOPSIS
A detailed synopsis with examples will be released soon.
EXPORT
A list of functions that can be exported. You can delete this section if
you don't export anything, such as for a purely object-oriented module.
SUBROUTINES/METHODS
calc_new_deltas
calc_new_endpoints
calc_new_nodulation
create_branch
create_branches
create_branches_recursive
create_path
create_stem
create_tree
make_branch
AUTHOR
Tamir Lousky, "<tlousky at cpan.org>"
lib/Algorithm/Shape/RandomTree.pm view on Meta::CPAN
}
# Linear algorithm's branch creation sub
sub create_branch {
my ( $self, $parent, $level ) = @_;
my $start_point = $parent->end_point;
my $verb = $self->verbose;
my ( $dx, $dy ) = $self->calc_new_deltas( $parent );
my ( $x_end, $y_end ) = $self->calc_new_endpoints(
$start_point, $dx, $dy
);
my $end_point = Algorithm::Shape::RandomTree::Branch::Point->new(
x => $x_end, y => $y_end
);
my $number = $self->count_branches + 1; # New branch's num (name)
my $newbranch = Algorithm::Shape::RandomTree::Branch->new(
name => $number,
lib/Algorithm/Shape/RandomTree.pm view on Meta::CPAN
my $falloff = ( $parent->level == 0 ) ? 1.5 : $parent->level + 1;
# Apply modifiers
my $new_dx = int ( ( $old_dx + $dx_modifier ) / $falloff );
my $new_dy = int ( ( $old_dy + $dy_modifier ) / $falloff );
return( $new_dx, $new_dy );
}
# Calculate New End-points: ( by adding the deltas to the start-points )
sub calc_new_endpoints {
my ( $self, $start_point, $dx, $dy ) = @_;
my $x_end = $dx + $start_point->x;
my $y_end = $dy + $start_point->y;
return( $x_end, $y_end );
}
# The recursive algorithm for creating all non-stem branches
sub create_branches_recursive {
lib/Algorithm/Shape/RandomTree.pm view on Meta::CPAN
sub make_branch {
my ( $self, $parent ) = @_;
my $start_point = $parent->end_point;
my $verb = $self->verbose;
my $name = $parent->name;
$verb && print "[make_branche] on parent: $name\n";
my ( $dx, $dy ) = $self->calc_new_deltas( $parent );
my ( $x_end, $y_end ) = $self->calc_new_endpoints(
$start_point, $dx, $dy
);
my $end_point = Algorithm::Shape::RandomTree::Branch::Point->new(
x => $x_end, y => $y_end
);
my $number = $self->count_branches + 1; # New branch's num (name)
my $nodulation = $self->calc_new_nodulation( $parent );
lib/Algorithm/Shape/RandomTree.pm view on Meta::CPAN
=head1 EXPORT
A list of functions that can be exported. You can delete this section
if you don't export anything, such as for a purely object-oriented module.
=head1 SUBROUTINES/METHODS
=head2 calc_new_deltas
=head2 calc_new_endpoints
=head2 calc_new_nodulation
=head2 create_branch
=head2 create_branches
=head2 create_branches_recursive
=head2 create_path
( run in 0.237 second using v1.01-cache-2.11-cpan-b61123c0432 )