Adds two structural component types that the plane/radial/mirror grammar can't
make — rays and spirals — and they stay byte-exact because the angle is integer.
- iatan2(): an integer CORDIC atan2 (vectoring; shifts and adds only, a 14-step
round(atan(2^-i)/2π·1024) table + axis guards), so θ is deterministic on every
machine. Accuracy ≈±1 step is irrelevant; determinism is the point.
- angular component: sin(fa·θ + φ) — fa rays/spokes from the centre (star,
sunburst, pinwheel, spoke, fan, radiate, burst, flare).
- spiral component: sin(fa·θ + fr·r + φ) — arms winding out (swirl, whirl,
whirlpool, twist, helix, coil, hypnotic, vortex, cyclone, spiral, galaxy).
- Lexicon entries grew to 10 elements [..., angular, spiral] (the SHAPE overlay is
now 5-wide; existing 3-wide entries zero-pad). ~30 new words; model version /4.
CRITICAL: the angular/spiral frequencies REUSE the existing fxr/fyr draws (no new
PRNG calls) and the type-pick keeps the same modulo, so a prompt with no
angular/spiral weight produces the identical stream. The conformance prompt has
none, so its pin is UNCHANGED (4bd80c0ef51bb843) — no test churn. Verified:
star/sunburst → rays, swirl/galaxy/vortex → spirals, byte-exact. θ/r are hoisted
to per-pixel and computed only when a component needs them.
Co-Authored-By: Claude Opus 4.8 <[email protected]>