Skip to content
Русский

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 error

family 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.

familyThe figurendphaseIts own levers
maurer_roser = sin(n θ + phase) + radial_offset, walked at a fixed steppetal frequencythe step between samples, in degreesadded inside the sine, in radiansradial_offset
lissajousx = sin(n t + phase), y = sin(d t)x frequencyy frequencyoffset between the axes, as a fraction of a turnnone
hypotrochoida circle rolling inside the fixed one (outside, for a negative n), traced by a pensigned radius ratio: positive rolls inside, negative draws the epicycloidcusps walkedwhere the pen starts on the rolling circle, as a fraction of a turnpen
superformulaGielis’ r = (|cos(m θ/4)|^n2 + |sin(m θ/4)|^n3)^(-1/n1)inertskew between the lobe exponents, n3 = lobe * dinertsym (m), sharpness (n1), lobe (n2)
harmonographthe Lissajous figure damped by exp(-decay t) over four turns, spiralling inwardx frequencyy frequencyoffset between the axes, as a fraction of a turndecay
torus_knota strand wound round a torus, in spacewhole turns round the torus’s axiswhole turns through its holeinerttube
lissajous_3dx = sin(n t + phase), y = sin(d t), z = sin(m t + phase_z), in spacex frequencyy frequencyoffset between x and y, as a fraction of a turnm, phase_z

Three things about the table are worth saying out loud:

  • Bind n and d on every family but the rose. Their defaults, 6 and 71, are the rose’s, and they read as face values elsewhere: an unbound Lissajous is a 6:71 figure, and an unbound superformula takes d = 71 as its maximum skew.
  • Whole numbers close the figure. A Lissajous with whole n and d, a harmonograph with those and decay = 0, a hypotrochoid whose d / |n| is whole, and a superformula with d = 1 or an even sym all 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 decay has 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.