Finalization of avoid crossing perimeters algorithm

EdgeGrid::Grid is used to find the intersection of a path with a polygon.
Simplification of find path.
Calculation of boundaries that not be crossed.
This commit is contained in:
Lukáš Hejl 2020-10-07 14:34:59 +02:00
parent 074406647a
commit 46bae74e48
2 changed files with 215 additions and 38 deletions

View file

@ -54,7 +54,7 @@ public:
virtual Polyline travel_to(const GCode &gcodegen, const Point &point);
private:
protected:
// For initializing the regions to avoid.
static Polygons collect_contours_all_layers(const PrintObjectPtrs& objects);
@ -85,13 +85,20 @@ private:
const size_t end_idx,
const Point &intersection_first,
const Point &intersection_last);
static ExPolygons get_boundary(const Layer &layer);
Polyline simplify_travel(const Polyline &travel, const GCode &gcodegen);
Polygons m_boundaries;
EdgeGrid::Grid m_grid;
public:
AvoidCrossingPerimeters2() : AvoidCrossingPerimeters() {}
virtual ~AvoidCrossingPerimeters2() = default;
virtual Polyline travel_to(const GCode &gcodegen, const Point &point) override;
void init_layer(const Layer &layer);
};
class OozePrevention {