The [curve] table
A parametric_curve preset picks its figure with one line:
system = "parametric_curve"
[curve]family = "superformula" # one of the seven below; any other name is a load errorfamily is read once, at load, and is not bindable — the params animate the
figure, they do not choose it. A preset with no [curve] table draws the Maurer
rose.
The seven families share one parameter surface, following
ADR-0180:
n, d and phase mean something different on each, and the levers in the last column
are each read by one family only and do nothing on the rest.
family | The figure | n | d | phase | Its own levers |
|---|---|---|---|---|---|
maurer_rose | r = sin(n θ + phase) + radial_offset, walked at a fixed step | petal frequency | the step between samples, in degrees | added inside the sine, in radians | radial_offset |
lissajous | x = sin(n t + phase), y = sin(d t) | x frequency | y frequency | offset between the axes, as a fraction of a turn | none |
hypotrochoid | a circle rolling inside the fixed one (outside, for a negative n), traced by a pen | signed radius ratio: positive rolls inside, negative draws the epicycloid | cusps walked | where the pen starts on the rolling circle, as a fraction of a turn | pen |
superformula | Gielis’ r = (|cos(m θ/4)|^n2 + |sin(m θ/4)|^n3)^(-1/n1) | inert | skew between the lobe exponents, n3 = lobe * d | inert | sym (m), sharpness (n1), lobe (n2) |
harmonograph | the Lissajous figure damped by exp(-decay t) over four turns, spiralling inward | x frequency | y frequency | offset between the axes, as a fraction of a turn | decay |
torus_knot | a strand wound round a torus, in space | whole turns round the torus’s axis | whole turns through its hole | inert | tube |
lissajous_3d | x = sin(n t + phase), y = sin(d t), z = sin(m t + phase_z), in space | x frequency | y frequency | offset between x and y, as a fraction of a turn | m, phase_z |
Three things about the table are worth saying out loud:
- Bind
nanddon every family but the rose. Their defaults,6and71, are the rose’s, and they read as face values elsewhere: an unbound Lissajous is a 6:71 figure, and an unbound superformula takesd = 71as its maximum skew. - Whole numbers close the figure. A Lissajous with whole
nandd, a harmonograph with those anddecay = 0, a hypotrochoid whosed / |n|is whole, and a superformula withd = 1or an evensymall come back to their start and are drawn as one unbroken loop. Anything else is an open trace, and it morphs continuously as an expression sweeps it. - The four new families are drawn as smooth arcs, not chords. The rose keeps its chord web at a
large step. The harmonograph falls back to chords only when a hard
decayhas collapsed its inner turns below what the fit can resolve.
The two space families are seen through a camera. torus_knot and lissajous_3d are drawn in
three dimensions through the shared camera the plexus system also uses
(ADR-0258):
yaw, pitch, distance and fov place it, and focus with aperture blur the strand away from
the focal plane. Those six do nothing on the flat families. The flat
families’ mirror_order, mirror_reflect, spin and stroke_blend do nothing on the space
families in turn: a space curve is one figure with no rotation of its own, so a slow clock on yaw
is what turns it. aperture costs fill, since every blurred stroke is wider, and the tier caps
both the blur and how many points a space curve is drawn from; a samples past that cap is clamped
and the app says so. A lissajous_3d with m and phase_z both at 0 lies flat.
fog and solid work on a space curve as they do on plexus: fog darkens
the far side of the strand, and solid = "1" paints its near loops over its far ones, so a knot
reads as a knot rather than as glowing wire. One more parameter is the space curves’ own:
hue_axis, 0 to 1, moves the colour from running along the strand (0, the default) to
running with depth (1, nearest first), so a strand passing in front of itself changes colour
where it crosses. Between the two it mixes them. All three do nothing on the flat families.
The range that reads for each of these parameters on each family is printed in the
parametric_curve table of Parameter roster, which also marks every
family a parameter is inert on.
Built from f4f807a at version 0.178.0. This site tracks main and is not versioned per release.