Blob Farm

blob50

The blob in all its glory:

Twirl with your mouse

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. ../snapshots/blob50.png
Octave Code:
  # 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 calculations
GNU Octave