mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-08 07:11:31 +00:00
The curve fitter split a piece over the tolerance at its worst point and accepted any piece at depth 41 whatever its error. A worst point near the end of a piece peels off a few points, so a long path refitted nearly all of its points at every level. A serpentine of 200,000 anchors kept pieces with a fitted error of up to about 1,598 pt at a tolerance of 1 pt. Simplify also took at most 256 samples per segment, so the lines between the samples on a long arc could be farther from it than the tolerance. - `fit_rec` moves a split that is near an end of its piece to two fifths of the piece from that end, so the depth is logarithmic, and it keeps no piece over the tolerance. A piece of 32 points or more is first fitted to about 16 of them, and it is split when that fit is over the tolerance. - A curve is also rejected when it is over the tolerance from the lines between the points it fits, with samples close enough that it stays within 1% of the tolerance of the chord between them. A pair of points that would need more than 1,024 samples counts as too far. - `join_pieces` joins neighboring pieces when one curve fits them, up to 33 pieces per curve. - `sample_steps` takes enough samples of a curved segment to keep it within 0.5% of the tolerance of the lines between them. A segment that would need more than 65,536 samples stays as it is, and so does a segment after a run's first 16,777,216 samples or 2,097,152 result segments. With Convert to Straight Lines such a segment becomes evenly spaced lines, up to 65,536. A fit holds at most 1,048,576 samples, so a longer run is fitted in parts. - Simplify fits at 98% of the tolerance, since turning a nearly straight curve into a line moves it by up to 1.5%. - Above slider level 0, Object > Path > Smooth fits a whole closed path with no corner along one direction across its start, when no segment stays as it is and the path is fitted as one part. A direct-selected section does not get this. The start can still have a kink: a first or last fitted curve that is nearly straight becomes a line, which leaves along its chord, and a refit with more anchors than the path is discarded, so the path stays as it is. A closed subpath that refits to one curve is still dropped, as on main, so it can end up farther than the tolerance from the result. docs/mcp.md states this. The anchors of every simplified path can differ from before, and so can the results of the Pencil, Blob Brush and Smooth, which use the same fit.