superellipsoid.scad
1 /** 2 * superellipsoid.scad 3 * 4 * @copyright Justin Lin, 2021 5 * @license https://opensource.org/licenses/lgpl-3.0.html 6 * 7 * @see https://openhome.cc/eGossip/OpenSCAD/lib3x-superellipsoid.html 8 * 9 **/ 10 11 use <../__comm__/__frags.scad> 12 use <../sweep.scad> 13 14 module superellipsoid(e, n) { 15 function _c(w, m) = 16 let(cosw = cos(w)) 17 sign(cosw) * pow(abs(cosw), m); 18 19 function _s(w, m) = 20 let(sinw = sin(w)) 21 sign(sinw) * pow(abs(sinw), m); 22 23 a = 1; 24 b = 1; 25 c = 1; 26 27 a_step = 360 / __frags(1); 28 29 sweep([ 30 for(v = [-90:a_step:90]) 31 [ 32 for(u = 180 - a_step; u >= -180; u = u - a_step) 33 let( 34 x = a * _c(v, n) * _c(u, e), 35 y = b * _c(v, n) * _s(u, e), 36 z = c * _s(v, n) 37 ) 38 [x, y, z] 39 ] 40 ]); 41 }