Incomplete work for porting simplify() to XS

This commit is contained in:
Alessandro Ranellucci 2013-11-21 20:25:24 +01:00
parent 7475762a27
commit 518798beb3
24 changed files with 121 additions and 41 deletions

View file

@ -10,9 +10,4 @@ our @EXPORT_OK = qw(EXTR_ROLE_PERIMETER EXTR_ROLE_EXTERNAL_PERIMETER
EXTR_ROLE_INTERNALBRIDGE EXTR_ROLE_SKIRT EXTR_ROLE_SUPPORTMATERIAL EXTR_ROLE_GAPFILL);
our %EXPORT_TAGS = (roles => \@EXPORT_OK);
sub simplify {
my $self = shift;
$self->polyline($self->polyline->simplify(@_));
}
1;

View file

@ -38,7 +38,7 @@ sub BUILD {
my $crossing_edges = $self->_crossing_edges;
# simplify islands
@{$self->islands} = map $_->simplify($self->_inner_margin), @{$self->islands};
$_->simplify($self->_inner_margin) for @{$self->islands};
# process individual islands
for my $i (0 .. $#{$self->islands}) {

View file

@ -1360,10 +1360,10 @@ sub make_thumbnail {
# remove polygons with area <= 1mm
my $area_threshold = Slic3r::Geometry::scale 1;
$self->thumbnail->append(
map $_->simplify(0.5),
grep $_->area >= $area_threshold,
@{ $mesh->horizontal_projection },
);
$self->thumbnail->simplify(0.5);
} else {
my $convex_hull = Slic3r::ExPolygon->new($self->convex_hull)->clone;
$convex_hull->scale(1/&Slic3r::SCALING_FACTOR);

View file

@ -32,13 +32,6 @@ sub grow {
return $self->split_at_first_point->grow(@_);
}
# NOTE that this will turn the polygon to ccw regardless of its
# original orientation
sub simplify {
my $self = shift;
return @{Slic3r::Geometry::Clipper::simplify_polygons([ $self->SUPER::simplify(@_) ])};
}
# this method subdivides the polygon segments to that no one of them
# is longer than the length provided
sub subdivide {

View file

@ -27,14 +27,6 @@ sub remove_acute_vertices {
polyline_remove_acute_vertices($self);
}
sub simplify {
my $self = shift;
my $tolerance = shift || 10;
my $simplified = Boost::Geometry::Utils::linestring_simplify($self->pp, $tolerance);
return __PACKAGE__->new(@$simplified);
}
sub bounding_box {
my $self = shift;
return Slic3r::Geometry::BoundingBox->new_from_points($self);

View file

@ -317,14 +317,8 @@ sub _simplify_slices {
my ($distance) = @_;
foreach my $layer (map @{$_->layers}, @{$self->objects}) {
my @new = map $_->simplify($distance), map $_->clone, @{$layer->slices};
$layer->slices->clear;
$layer->slices->append(@new);
foreach my $layerm (@{$layer->regions}) {
my @new = map $_->simplify($distance), map $_->clone, @{$layerm->slices};
$layerm->slices->clear;
$layerm->slices->append(@new);
}
$layer->slices->simplify($distance);
$_->slices->simplify($distance) for @{$layer->regions};
}
}

View file

@ -38,11 +38,6 @@ sub offset {
return [ map $self->clone(expolygon => $_), @{$self->expolygon->offset_ex(@_)} ];
}
sub simplify {
my $self = shift;
return map $self->clone(expolygon => $_), $self->expolygon->simplify(@_);
}
sub p {
my $self = shift;
return @{$self->polygons};