mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-29 14:32:03 +08:00

WIP GCode/SmoothPath.cpp,hpp cache for interpolating extrusion path with arches. Removed Perl test t/geometry.t, replaced with C++ tests. Refactored ExtrusionEntity and derived classes to hold extrusion attributes in new ExtrusionFlow/ExtrusionAttributes classes. Reworked path ordering in G-code export to never copy polylines, but to work with a new "flipped" attribute. Reworked G-code export to interpolate extrusion paths with smooth paths and to extrude those smooth paths. New parameters: arc_fitting, arc_fitting_tolerance Renamed GCode class to GCodeGenerator Moved GCodeWriter.cpp/hpp to GCode/ Moved Wipe from from GCode.cpp,hpp to GCode/Wipe.cpp,hpp Moved WipeTowerIntegration from GCode.cpp,hpp to GCode/WipeTowerIntegration.cpp,hpp New variant of douglas_peucker() to simplify range of iterators in place. Refactored wipe in general and wipe on perimeters / hiding seams. WIP: Convert estimate_speed_from_extrusion_quality() and its application to smooth paths. WIP: Cooling buffer to process G2G3, disable arc fitting for filters that cannot process it.
37 lines
689 B
Perl
37 lines
689 B
Perl
package Slic3r::Geometry;
|
|
use strict;
|
|
use warnings;
|
|
|
|
require Exporter;
|
|
our @ISA = qw(Exporter);
|
|
|
|
# Exported by this module. The last section starting with convex_hull is exported by Geometry.xsp
|
|
our @EXPORT_OK = qw(
|
|
PI epsilon
|
|
|
|
scale
|
|
unscale
|
|
scaled_epsilon
|
|
|
|
X Y Z
|
|
convex_hull
|
|
deg2rad
|
|
rad2deg
|
|
);
|
|
|
|
use constant PI => 4 * atan2(1, 1);
|
|
use constant A => 0;
|
|
use constant B => 1;
|
|
use constant X1 => 0;
|
|
use constant Y1 => 1;
|
|
use constant X2 => 2;
|
|
use constant Y2 => 3;
|
|
|
|
sub epsilon () { 1E-4 }
|
|
sub scaled_epsilon () { epsilon / &Slic3r::SCALING_FACTOR }
|
|
|
|
sub scale ($) { $_[0] / &Slic3r::SCALING_FACTOR }
|
|
sub unscale ($) { $_[0] * &Slic3r::SCALING_FACTOR }
|
|
|
|
1;
|