Detection of optimal infill direction for bridges. Includes many fixes and improvements.

This commit is contained in:
Alessandro Ranellucci 2011-10-07 19:07:57 +02:00
parent 1cb515a8e5
commit 743f2abcf2
18 changed files with 445 additions and 68 deletions

View file

@ -10,7 +10,7 @@ use constant PI => 4 * atan2(1, 1);
sub infill_direction {
my $self = shift;
my ($polygons) = @_;
my ($surface) = @_;
# set infill angle
my (@rotate, @shift);
@ -23,7 +23,11 @@ sub infill_direction {
$rotate[0] = Slic3r::Geometry::deg2rad($Slic3r::fill_angle) + PI/2;
}
# TODO: here we should implement an "infill in direction of bridges" option
# use bridge angle
if ($surface->isa('Slic3r::Surface::Bridge')) {
Slic3r::debugf "Filling bridge with angle %d\n", $surface->bridge_angle;
$rotate[0] = Slic3r::Geometry::deg2rad($surface->bridge_angle);
}
@shift = @{ +(Slic3r::Geometry::rotate_points(@rotate, \@shift))[0] };
return [\@rotate, \@shift];

View file

@ -16,7 +16,7 @@ sub fill_surface {
# rotate polygons so that we can work with vertical lines here
my $polygons = [ $surface->p ];
my $rotate_vector = $self->infill_direction($polygons);
my $rotate_vector = $self->infill_direction($surface);
$self->rotate_points($polygons, $rotate_vector);
my $bounding_box = [ Slic3r::Geometry::bounding_box(map @$_, $polygons) ];

View file

@ -21,7 +21,7 @@ sub fill_surface {
my $polygons = [ $surface->p ];
# rotate polygons so that we can work with vertical lines here
my $rotate_vector = $self->infill_direction($polygons);
my $rotate_vector = $self->infill_direction($surface);
$self->rotate_points($polygons, $rotate_vector);
my $distance_between_lines = $Slic3r::flow_width / $Slic3r::resolution / $params{density};