Non-crossing infill optimization (#15931)

* Non-crossing infill optimization

* test triangles

* test grid

* cleaning

* Align and clip rectilinear infill paths

Generate infill coverage in the pattern's local frame, rotate triangular patterns by layer, and clip centerlines to the surface vicinity. Start closed outlines outside the surface so clipping splits them cleanly.

* Update test_fill.cpp

* Update multiline-infill.md

---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
This commit is contained in:
Rodrigo Faselli
2026-09-28 15:13:57 -03:00
committed by GitHub
co-authored by Ian Bassi
parent 9d8257d2eb
commit 11e9e07f20
4 changed files with 159 additions and 123 deletions
+6
View File
@@ -40,6 +40,12 @@ The pattern is phased on fixed positions, so it lines up across layers and
across the regions of one layer. Rounding the corners with
`sparse_infill_smooth_factor` happens before `multiline_fill()`.
Each region builds only the rows over its bounding box in that frame, and
outlines only the centerlines within `d1 / 2` of it, the ones whose outlines
reach it. Every row is monotone along its direction, so each outline is started
on the cap at the first end of its centerline, outside the region, and clipping
to the region cuts it only where it crosses the boundary.
## Cubic
Single-line Cubic draws the three families at the same spacing `h` and shifts