diff options
Diffstat (limited to 'ArcWelder/segmented_shape.h')
-rw-r--r-- | ArcWelder/segmented_shape.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ArcWelder/segmented_shape.h b/ArcWelder/segmented_shape.h index 8b014bc..d27a568 100644 --- a/ArcWelder/segmented_shape.h +++ b/ArcWelder/segmented_shape.h @@ -25,7 +25,6 @@ #pragma once #include <string> #include <limits> -#define PI_DOUBLE 3.14159265358979323846264338327950288 #include <list> #include "utilities.h" @@ -36,7 +35,7 @@ #define DEFAULT_XYZ_TOLERANCE 0.001 #define DEFAULT_E_PRECISION 5 #define ARC_LENGTH_PERCENT_TOLERANCE_DEFAULT 0.05 // one percent - +#define DEFAULT_MAX_GCODE_LENGTH 0 // the maximum gcode length ( < 1 = unlimited) struct point { public: @@ -47,14 +46,19 @@ public: double z; static point get_midpoint(point p1, point p2); static bool is_near_collinear(const point& p1, const point& p2, const point& p3, double percent_tolerance); + static double cartesian_distance(const point& p1, const point& p2); }; struct printer_point : point { public: - printer_point() :point(0, 0, 0), e_relative(0), distance(0) {} - printer_point(double x, double y, double z, double e_relative, double distance) :point(x,y,z), e_relative(e_relative), distance(distance) {} + printer_point() :point(0, 0, 0), e_relative(0), distance(0), is_extruder_relative(false), e_offset(0), f(0) {} + printer_point(double x, double y, double z, double e_offset, double e_relative, double f, double distance, bool is_extruder_relative) + : point(x,y,z), e_offset(e_offset), e_relative(e_relative), f(f), distance(distance), is_extruder_relative(is_extruder_relative) {} + bool is_extruder_relative; + double e_offset; double e_relative; + double f; double distance; }; @@ -99,7 +103,7 @@ struct vector : point }; -#define DEFAULT_MAX_RADIUS_MM 1000000.0 // 1km +#define DEFAULT_MAX_RADIUS_MM 9999.0 // 9.999m struct circle { circle() { center.x = 0; @@ -163,8 +167,8 @@ struct arc : circle double polar_start_theta; double polar_end_theta; double max_deviation; - point start_point; - point end_point; + printer_point start_point; + printer_point end_point; DirectionEnum direction; double get_i() const; double get_j() const; @@ -184,9 +188,9 @@ struct arc : circle private: static bool try_create_arc( const circle& c, - const point& start_point, - const point& mid_point, - const point& end_point, + const printer_point& start_point, + const printer_point& mid_point, + const printer_point& end_point, arc& target_arc, double approximate_length, double resolution = DEFAULT_RESOLUTION_MM, |