Use the faster polygon_multi_linestring_intersection()
This commit is contained in:
parent
ae201c8f41
commit
2963e54d21
4 changed files with 6 additions and 15 deletions
|
@ -153,10 +153,7 @@ sub clip_line {
|
|||
my $self = shift;
|
||||
my ($line) = @_; # line must be a Slic3r::Line object
|
||||
|
||||
return Boost::Geometry::Utils::polygon_linestring_intersection(
|
||||
$self->boost_polygon,
|
||||
$line->boost_linestring,
|
||||
);
|
||||
return Boost::Geometry::Utils::polygon_multi_linestring_intersection($self, [$line]);
|
||||
}
|
||||
|
||||
sub simplify {
|
||||
|
|
|
@ -48,9 +48,9 @@ sub fill_surface {
|
|||
|
||||
# clip paths against a slightly offsetted expolygon, so that the first and last paths
|
||||
# are kept even if the expolygon has vertical sides
|
||||
my @paths = @{ Boost::Geometry::Utils::polygon_linestring_intersection(
|
||||
+($expolygon->offset_ex(scaled_epsilon))[0]->boost_polygon, # TODO: we should use all the resulting expolygons and clip the linestrings to a multipolygon object
|
||||
Boost::Geometry::Utils::linestring(@vertical_lines),
|
||||
my @paths = @{ Boost::Geometry::Utils::polygon_multi_linestring_intersection(
|
||||
+($expolygon->offset_ex(scaled_epsilon))[0], # TODO: we should use all the resulting expolygons and clip the linestrings to a multipolygon object
|
||||
[ @vertical_lines ],
|
||||
) };
|
||||
for (@paths) {
|
||||
$_->[0][Y] += $overlap_distance;
|
||||
|
|
|
@ -92,10 +92,7 @@ sub BUILD {
|
|||
|
||||
my $intersects = sub {
|
||||
my ($polygon, $line) = @_;
|
||||
@{Boost::Geometry::Utils::polygon_linestring_intersection(
|
||||
$polygon->boost_polygon,
|
||||
$line->boost_linestring,
|
||||
)} > 0;
|
||||
@{Boost::Geometry::Utils::polygon_multi_linestring_intersection([$polygon], [$line])} > 0;
|
||||
};
|
||||
|
||||
{
|
||||
|
|
|
@ -115,10 +115,7 @@ sub clip_with_expolygon {
|
|||
my $self = shift;
|
||||
my ($expolygon) = @_;
|
||||
|
||||
my $result = Boost::Geometry::Utils::polygon_linestring_intersection(
|
||||
$expolygon->boost_polygon,
|
||||
$self->boost_linestring,
|
||||
);
|
||||
my $result = Boost::Geometry::Utils::polygon_multi_linestring_intersection($expolygon, [$self]);
|
||||
bless $_, 'Slic3r::Polyline' for @$result;
|
||||
bless $_, 'Slic3r::Point' for map @$_, @$result;
|
||||
return @$result;
|
||||
|
|
Loading…
Reference in a new issue