Fix error in contains_point() port

This commit is contained in:
Alessandro Ranellucci 2013-11-21 18:42:16 +01:00
parent 3aef663f7f
commit 5f2b2c90b6
2 changed files with 4 additions and 4 deletions

View file

@ -59,10 +59,10 @@ use Slic3r::Test;
if ($self->F == $config->external_perimeter_speed*60) { if ($self->F == $config->external_perimeter_speed*60) {
my $move_dest = Slic3r::Point->new_scale(@$info{qw(new_X new_Y)}); my $move_dest = Slic3r::Point->new_scale(@$info{qw(new_X new_Y)});
$external_loops{$self->Z}++; $external_loops{$self->Z}++;
my $loop_contains_point = Slic3r::Polygon->new_scale(@$cur_loop)->contains_point($move_dest);
$has_outwards_move = 1 $has_outwards_move = 1
if !Slic3r::Polygon->new_scale(@$cur_loop)->contains_point($move_dest) if (!$loop_contains_point && $external_loops{$self->Z} == 2) # contour should include destination
? ($external_loops{$self->Z} == 2) # contour should include destination || ($loop_contains_point && $external_loops{$self->Z} == 1); # hole should not
: ($external_loops{$self->Z} == 1); # hole should not
} }
$cur_loop = undef; $cur_loop = undef;
} }

View file

@ -114,7 +114,7 @@ bool
Polygon::contains_point(const Point* point) const Polygon::contains_point(const Point* point) const
{ {
// http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
bool result; bool result = false;
Points::const_iterator i = this->points.begin(); Points::const_iterator i = this->points.begin();
Points::const_iterator j = this->points.end() - 1; Points::const_iterator j = this->points.end() - 1;
for (; i != this->points.end(); j = i++) { for (; i != this->points.end(); j = i++) {