stroke op• Data kinds: image2d × pairs → table
• Call: import fullseye as fs; fs.ledger.stroke_tone_error(image, points, pen_width=1.0, blur_sigma=3.0, gamma=1.0) (to call the implementation directly, import printpath; printpath.stroke_tone_error(image, points, pen_width=1.0, blur_sigma=3.0, gamma=1.0); from the registry, opsprintpath.get("stroke_tone_error"))
How much the tone resulting from drawing the lines differs from the target. → table
★This is the true objective function of single-stroke drawing. Instead of leaving "it looks like the picture" to the human eye, it draws with the pen width, blurs to the scale of the eye, compares with the target darkness, and returns numbers.
Returns: dict
"rms" / "max_abs" / "bias" -- difference in darkness (on the [0, 1] scale)
"corr" -- correlation between target darkness and drawn darkness (the closer to 1, the better the tone is followed)
"ink_fraction" -- area fraction of ink on the paper
"target_darkness" -- mean darkness of the target (the quantity the ink fraction should balance)
"length_px" -- length of the line [px]
★The pen width is a continuous knob (painted by coverage). Where lines do not overlap, ink fraction ≈ line length × pen width / image area holds, so the pen width matching the target darkness can be solved in closed form first and then checked:
pen_width ≈ target_darkness × area / length_px.
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_one_stroke_epicycles — py -3.11 examples/poc_one_stroke_epicycles.py
table as input)gcode_write · gcode_extrusion_volume · gcode_time_estimate · gcode_layer_image · contours_to_gcode
stroke)stipple_points_from_image · stipple_energy · stroke_tour_closed · mst_length · stroke_resample_closed
*Provenance: printpath.py — PRINTPATH operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.