Skip to content

The line scenes — colour along the generator's axis

parametric_curve, lsystem and star_pattern carry the same surface spectrum does (ADR-0059): [palette], [palette_b], palette_mix, hue_spread and saturation, sampled on the CPU per segment. The arithmetic is spectrum’s exactly —

hue + hue_spread * u

then crossfade by palette_mix, desaturate by saturation, scale by brightness. What differs per scene is u, and it is a property of the generator rather than something a preset picks:

Systemu isNotes
parametric_curveposition along the traced path, i / (samples - 1)Normalized over the full curve, so draw_progress draws the gradient on rather than re-tinting the chords already drawn.
lsystemgeneration depth over the figure’s deepest generationBranch nesting: 0 on the trunk, one more per open [. Normalized over the built figure’s own maximum, not visible_depth.
star_patternnormalized radius from the rosette centreInert today — see below.
spectrumband index, i / nThe original; unchanged.

hue_spread = 0 is the default everywhere and reproduces exactly the single flat hue these scenes drew before, so adding the surface moved no shipped preset.

Two honest limits, both measured rather than estimated:

  • A grammar without branches has one generation. lsystem_arrowhead’s rules (F -> G-F-G, G -> F+G+F) contain no brackets, so every segment of it sits at generation 0 at all seven of its depths and hue_spread does nothing there however large. That is a property of a Sierpinski arrowhead, not a gap: every segment genuinely is at the same recursion level. lsystem_fern by contrast reaches generation 11 at visible_depth = 6, which is why the divisor is the figure’s own maximum — dividing by 6 there would clamp most of the plant at the palette’s far end.
  • hue_spread does nothing on star_pattern. A Hankin rosette is 2n congruent segments about the frame centre, so every one of them occupies the same radial interval; the spread of segment radii measures 1.2e-7 (f32 noise) at every tiling order and contact angle. There is no range to walk, and the normalization collapses to u = 0 rather than sweeping on noise. The scene still gains [palette], saturation and palette_mix, which are real. What is empty is the rosette’s interior — at the retired star_rosette’s 12-fold / 20° the strokes lived between radius 0.54 and 0.90, so the inner 60% of the disc was bare, and the retired star_lantern’s 55° variant emptied 87% of it. The generator question has since been answered: rings puts motifs at several radii, the ramp is computed over the combined figure, and on a rings preset (star_rosewindow ships one) hue_spread is a real lever — see the star_pattern notes in presets/README.md.

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.