MoI discussion forum
MoI discussion forum

Full Version: Circular Helicoid

From: bemfarmer
27 Oct 2020   [#1]
This script produces u and v iso-curves of a helicoid wrapped around a circle.
This “bent” helicoid of Meeks and Weber has a complex number parametric equation derived from Bjorling’s formula.

The complex number parametric equations were expanded into javascript math, and the Real portions of the equations used for the X, Y, and Z cartesian coordinate values of the surface curves (isolines). The equations could be used with the MoI nodeeditor MathPts node to create the circular helicoid, but a MoI script was also written.

Positive parameter “k” controls the number of half twists of the ribbon.
For a closed two sided loop, k is an integer.
For a one sided loop, k = integer + 0.5.
k = 0.5 yields a (Meeks) Moebius strip.
To avoid division by zero, k != 0, k != 1, and k != -1. So k defaults to 0.5 in these three cases.
Negative values of "k" also produce some sort of loop.

Parameter x = tu, represents the U range.
Default range was changed from -PI <= x <= PI, to 0 <= x <= 2*PI.
This allows the divBykNum checkbox to divide the U range by kNum, if the box is checked. This helps Network command to work properly. Once a segment is surfaced by Network, a circular array by kNum copies makes the 360 degree circular helicoid.
It is possible to offset a segment surface a bit, sweep the outer edges with line segments, and get a solid.

Parameter y = tv, represents the V range. e.g. -0.25 <= y <= 0.25.
x and y are Real numbers.
z represents a complex number. z = x + i*y. ( i*i = -1 )

X = the Real part of the first complex parametric equation.
Y = the Real part of the second complex parametric equation.
Z = the Real part of the third complex parametric equation.
(In MathPts, X = f(u,v), Y = f(u,v), Z = f(u,v). (three different f functions))

Eqn1:
Real ( cos(z) – ( i / ( k*k – 1 )) * (k*cos(z)*cos(k*z) – k + sin(z)*sin(k*z)) )

Eqn2:
Real ( sin(z) – ( i / ( k*k – 1 )) * (k*cos(k*z)*sin(z) – cos(z)*sin(k*z)) )

Eqn3:
Real ( ( i / k) * sin(k*z) )

After equation expansion, "Real" deletes the imaginary portions.
The parametric equation expansion, using several trig identities, was very error-prone.
The resulting equations used in the script are believed to be correct, after doing the math half a dozen times.

There are two credit links in the CircularHelicoid.js file.

- Brian

I'll see about a picture tonight. Must delete some forum uploads to get more space.

Attachments:
Helicoids.zip