Converts an arc move into the points to draw, ending on the arc's endpoint
Absolute position in millimeters at the start of the arc
Arc parameters normalized to millimeters
Called once per point, in order, endpoint last. A callback instead of a returned array so arc-heavy files do not allocate a throwaway point object per segment.
The arc's exact endpoint (also the last point emitted). Emits at least the endpoint, even for degenerate arcs.
Tessellates G2/G3 arc moves into straight line segments
Remarks
Downstream geometry only handles straight segments, so arcs are approximated by a polyline. The segment count is chosen so the chords stay within chordTolerance of the true arc: for an angular step t on a circle of radius r the worst-case gap (sagitta) is r * (1 - cos(t / 2)), so the step scales with the square root of the radius instead of linearly -- large arcs get far fewer points than fixed-length segments would, at equal visual quality. Supports both I/J center-offset mode and R radius mode, including helical arcs that change Z along the way. All arc math lives here; the interpreter routes the resulting points into paths and job state.