blob50 |
The blob in all its glory:
This would sit nicely on a surface. You could fill in the gap and make a nice case.
Click on the snapshot to download the blob's stl file. |
# name of the blob project = "blob50"; # function at origin must be <0, and >0 far enough away. w=0 defines the surface function w = f(x2,y2,z2,c,r) # three lobed toroid with low profile bumps and flat top x = (x2-c(1))/r(1); y=(y2-c(2))/r(2); z=(z2-c(3))/r(3); w=0.20736E-7.*(0.434028E9+(-0.482253E9).*x.^2+0.192901E8.*x.^3+ ... 0.482253E8.*x.^4+0.416667E5.*x.^6+0.138889E5.*x.^8+0.1E1.*x.^12+( ... -0.482253E9).*y.^2+(-0.578704E8).*x.*y.^2+0.964506E8.*x.^2.*y.^2+( ... -0.25E6).*x.^4.*y.^2+(-0.694444E5).*x.^6.*y.^2+(-0.12E2).*x.^10.* ... y.^2+0.482253E8.*y.^4+0.375E6.*x.^2.*y.^4+0.416667E5.*x.^4.*y.^4+ ... 0.54E2.*x.^8.*y.^4+0.125E6.*x.^2.*y.^6+(-0.108E3).*x.^6.*y.^6+ ... 0.81E2.*x.^4.*y.^8+(-0.694444E7).*x.^3.*z+(-0.231481E7).*x.^5.*z+( ... -0.333333E3).*x.^9.*z+0.208333E8.*x.*y.^2.*z+0.462963E7.*x.^3.* ... y.^2.*z+0.3E4.*x.^7.*y.^2.*z+0.694444E7.*x.*y.^4.*z+(-0.9E4).* ... x.^5.*y.^4.*z+0.9E4.*x.^3.*y.^6.*z+0.289352E9.*z.^2+0.964506E8.* ... x.^2.*z.^2+0.416667E5.*x.^6.*z.^2+0.964506E8.*y.^2.*z.^2+(-0.25E6) ... .*x.^4.*y.^2.*z.^2+0.375E6.*x.^2.*y.^4.*z.^2+(-0.231481E7).*x.^3.* ... z.^3+0.694444E7.*x.*y.^2.*z.^3+0.482253E8.*z.^4); endfunction; c_outer = [0,0,0]; r_outer = [30,30,30]; step = 4; # grid pitch in mm start with 4mm to see the shape quickly. Once you have it just right, change to 2mm for printing source("../octave/func2stl_v01.m"); # do all the calculationsGNU Octave