supertoroidTest.frink

Download or view supertoroidTest.frink in plain text format


/** This tests supertoroid generation in Frink's 3D routines (notably
    frink.graphics.VoxelArray.makeSupertoroid )
    and was used to fix the bounding box calculation problem when rx != ry
    It now calculates a correct minimal bounding box for all cases.

    Frink's 3-D routines:

    https://frinklang.org/3d/ (especially the VoxelArray class)

    For more information on supertoroids, see:
  https://cse.buffalo.edu/~jryde/cse673/files/superquadrics.pdf for the equation

  http://paulbourke.net/geometry/toroidal/ for graphs of the equation families. 
*/


res = 254/in

r = 100    // Radius of large ring
rx = 10    // Radius of small ring in x direction
ry = 20    // Radius of small ring in y direction
rz = 45    // Radius of small ring in z direction

// Eccentricities of the large and small ring.
//   (1=circle, 2=diamond, less than 1 is puffy rounded square, greater than 2
//    is a pinched diamond.  See links above for examples. )
eLarge = 1 // Eccentricity of large ring
eSmall = 1 // Eccentricity of small ring.

outer = callJava["frink.graphics.VoxelArray", "makeSupertoroid", [r, rx, ry, rz, eSmall, eLarge]]

outer.projectX[undef].show["X"]
outer.projectY[undef].show["Y"]
outer.projectZ[undef].show["Z"]

filename = "supertoroid.obj"
print["Writing $filename..."]
w = new Writer[filename]
w.println[outer.toObjFormat["supertoroid", 1/(res mm)]]
w.close[]
println["done."]


Download or view supertoroidTest.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 20139 days, 6 hours, 25 minutes ago.