Add safety offset to thin wall regions to prevent overlapping geometry and corrupt Voronoi diagram
This commit is contained in:
parent
e1f93fd112
commit
4a894b1e20
@ -99,6 +99,7 @@ sub make_perimeters {
|
|||||||
my $diff = diff_ex(
|
my $diff = diff_ex(
|
||||||
\@last,
|
\@last,
|
||||||
offset(\@offsets, +0.5*$pwidth),
|
offset(\@offsets, +0.5*$pwidth),
|
||||||
|
1, # medial axis requires non-overlapping geometry
|
||||||
);
|
);
|
||||||
push @thin_walls, @$diff;
|
push @thin_walls, @$diff;
|
||||||
}
|
}
|
||||||
@ -222,9 +223,6 @@ sub make_perimeters {
|
|||||||
$self->perimeters->append(@loops);
|
$self->perimeters->append(@loops);
|
||||||
|
|
||||||
# process thin walls by collapsing slices to single passes
|
# process thin walls by collapsing slices to single passes
|
||||||
my $min_thin_wall_width = $pwidth/3;
|
|
||||||
my $min_thin_wall_length = 2*$pwidth;
|
|
||||||
#@thin_walls = @{offset2_ex([ map @$_, @thin_walls ], -0.5*$min_thin_wall_width, +0.5*$min_thin_wall_width)};
|
|
||||||
if (@thin_walls) {
|
if (@thin_walls) {
|
||||||
my @p = map @{$_->medial_axis($pspacing)}, @thin_walls;
|
my @p = map @{$_->medial_axis($pspacing)}, @thin_walls;
|
||||||
|
|
||||||
@ -240,6 +238,7 @@ sub make_perimeters {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my @paths = ();
|
my @paths = ();
|
||||||
|
my $min_thin_wall_length = 2*$pwidth;
|
||||||
for my $p (@p) {
|
for my $p (@p) {
|
||||||
next if $p->length < $min_thin_wall_length;
|
next if $p->length < $min_thin_wall_length;
|
||||||
my %params = (
|
my %params = (
|
||||||
|
Loading…
Reference in New Issue
Block a user