Ulisse Dini’s surface is a pseudosphere, the trumpet-shaped surface of constant negative curvature, twisted round into a helix. It comes straight from three formulas in two parameters: u goes round the axis and v runs from the narrow tip to the flared rim.
Reference: choose on the canvas toolbar to load the finished definition.
Build it
-
Place six sliders: Turns: 2 (1 – 4) with Decimals
1, Twist: 0.2 (0 – 0.6) with Decimals2, Grid around: 80 (30 – 120) and Grid along: 16 (6 – 30) with Decimals0, Neck: 0.15 (0.05 – 0.6) with Decimals2, and Size: 6 (2 – 15). -
Place an Expression (Maths),
2*pi*x, with Turns, and a Range (Maths), u, from0to it with Grid around → N. -
Place a Range, v, from Neck to
1.5with Grid along → N. -
Place three Expression components, each with u → x and v → y, with Graft on y:
-
cos(x)*sin(y) -
sin(x)*sin(y) -
cos(y) + log(tan(y/2)) + z*x, with Twist → z.
-
-
Place a Construct Point (Vector) with the three, an Addition (Maths), Grid around +
1, and a Surface From Points (Surface), Dini surface, with Flatten on P and the row length → U. -
Place a Scale (Transform) with Size → F, and turn Preview off on the points and the unscaled surface.
What is happening
Without the z*x term (Twist 0) the formulas give the pseudosphere: circles of radius sin v stacked at heights cos v + ln tan(v/2), flaring from a cusp to a rim. Adding Twist × u lifts each point in proportion to how far round it is, so going once round climbs 2π × Twist. The trumpet becomes a helix, and it overlaps itself after each turn. With a = 1, Dini’s surface keeps a constant Gaussian curvature of −1/(1 + Twist²) everywhere.
The tip, v → 0, runs off to minus infinity, so Neck stops the grid short of it. Grafting v makes one row of points per value of v, the layout Surface From Points expects. The geometry tests check that the surface passes through the formula’s points. The surface updates in about half a second.
Things to try
-
Set Twist to 0 for the plain pseudosphere (only one turn’s worth is visible).
-
Set Turns to 4 and Twist to 0.1 for a tightly wound shell.
-
Lower Neck to 0.05 for a longer, sharper spike.