Refactoring, new bounding_box_3D function

This commit is contained in:
Alessandro Ranellucci 2012-09-22 16:10:24 +02:00
parent 35e449e891
commit b5672de3ca
2 changed files with 16 additions and 9 deletions

View File

@ -20,7 +20,7 @@ our @EXPORT_OK = qw(
shortest_path collinear scale unscale merge_collinear_lines shortest_path collinear scale unscale merge_collinear_lines
rad2deg_dir bounding_box_center line_intersects_any douglas_peucker rad2deg_dir bounding_box_center line_intersects_any douglas_peucker
polyline_remove_short_segments normal triangle_normal polygon_is_convex polyline_remove_short_segments normal triangle_normal polygon_is_convex
scaled_epsilon scaled_epsilon bounding_box_3D
); );
@ -707,6 +707,20 @@ sub bounding_box_intersect {
return 1; return 1;
} }
# 3D
sub bounding_box_3D {
my ($points) = @_;
my @extents = (map [undef, undef], X,Y,Z);
foreach my $point (@$points) {
for (X,Y,Z) {
$extents[$_][MIN] = $point->[$_] if !defined $extents[$_][MIN] || $point->[$_] < $extents[$_][MIN];
$extents[$_][MAX] = $point->[$_] if !defined $extents[$_][MAX] || $point->[$_] > $extents[$_][MAX];
}
}
return @extents;
}
sub angle3points { sub angle3points {
my ($p1, $p2, $p3) = @_; my ($p1, $p2, $p3) = @_;
# p1 is the center # p1 is the center

View File

@ -381,14 +381,7 @@ sub duplicate {
sub extents { sub extents {
my $self = shift; my $self = shift;
my @extents = (map [undef, undef], X,Y,Z); return Slic3r::Geometry::bounding_box_3D($self->vertices);
foreach my $vertex (@{$self->vertices}) {
for (X,Y,Z) {
$extents[$_][MIN] = $vertex->[$_] if !defined $extents[$_][MIN] || $vertex->[$_] < $extents[$_][MIN];
$extents[$_][MAX] = $vertex->[$_] if !defined $extents[$_][MAX] || $vertex->[$_] > $extents[$_][MAX];
}
}
return @extents;
} }
sub size { sub size {