Improvements in Inner Outer Inner wall ordering logic (#6138)

* Improvements in Inner Outer Inner wall ordering logic

* Updated to BFS algorithm, made ordering more robust and corrected edge cases

* Doc updates

* Refinements in perimeter sorting

* Removal of touch threshold and code debugging to improve sequencing

* Code cleanup

* Code refinements on perimeter distance thresholds

* Extend perimeter re-ordering to more than inset index 2, to reduce travel moves when printing neighbouring features

* Refinements to IOI perimeter re-ordering algorithm to improve travel scenarios where multiple external perimeters are contained in the same island.

* Documentation updates

* Removed unnecessary code

* Removed bespoke to_points function and replaced with ExtrusionLine member already present. Removed squaredDistance and replaced with Eigen library call.

* Refactor code to move distancing functions to the multipoint class. Renamed for more clarity on their purpose.
This commit is contained in:
Ioannis Giannakas 2024-08-13 16:25:49 +01:00 committed by GitHub
parent 7082e945b1
commit 9a260010fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 248 additions and 45 deletions

View file

@ -98,6 +98,9 @@ public:
static Points _douglas_peucker(const Points &points, const double tolerance);
static Points visivalingam(const Points& pts, const double tolerance);
static Points concave_hull_2d(const Points& pts, const double tolerence);
//Orca: Distancing function used by IOI wall ordering algorithm for arachne
static double minimumDistanceBetweenLinesDefinedByPoints(const Points& A, const Points& B);
inline auto begin() { return points.begin(); }
inline auto begin() const { return points.begin(); }
@ -105,6 +108,10 @@ public:
inline auto end() const { return points.end(); }
inline auto cbegin() const { return points.begin(); }
inline auto cend() const { return points.end(); }
private:
//Orca: Distancing function used by IOI wall ordering algorithm for arachne
static double squaredDistanceToLineSegment(const Point& p, const Point& v, const Point& w);
};
class MultiPoint3