mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-14 14:12:44 +00:00
Photoshop 27.11's round tip, measured on single dabs (hardness 0-100 in steps of 10 at 40 px, checked at 100, 9, 7, 5, 3, 2 and 1 px): a solid core of radius r0*R, then a Gaussian shoulder exp(-((d - r0) / s)^2) of width s*R, both from a table by hardness. A soft tip reaches well past its nominal radius (hardness 0 is a Gaussian of sigma 0.47 R: 8 % at 1.05 R); PhotoCraft's (1 - t^2)^4 ended at R and kept far less coverage (a 40 px hardness-0 dab held 251 coverage units against Photoshop's 542). The edge stays at least ~1 px wide (0.3 R on small tips, never under 1/4 px). exp is (1 - u/64)^64 by squaring, so it is the same on every platform. Dab rectangles, reaches and the retouch footprint grow to the tip's reach (tip_reach); the brush cursor's 50 % ring (half_coverage_radius) follows the new curve. Tests that hard-coded the old curve now check measured values; tests that bounded a stroke by the nominal radius use the reach. Measured against Photoshop (max levels / mean): 40 px dabs, hardness 0-70: 70-156 / 12-15 -> 2-6.5 / <0.7; 100 px dabs 70-177 -> 2-27; strokes (probe 13) soft and medium 20-60 px 133-178 / up to 17 -> 4-26 / <=0.5; spacing sweeps 134-221 -> 7-9; soft Flow build-up 85 / 7.5 -> 5 / 0.16; small 1-7 px total error lower in 21 of 30 cases (medium hardness at 2-5 px a little higher: a follow-up). Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>