Blob Farm

blob11

The blob in all its glory:

Twirl with your mouse

A rippled button.

Click on the snapshot to download the blob's stl file. ../snapshots/blob11.png
Octave Code:
1; # Prevent Octave from thinking that this is a function
   # though one is defined here
   
  function w = f(x2,y2,z2,c,r,e) 
   x  = (x2-c(1))/r(1);
   y  = (y2-c(2))/r(2);
   z  = (z2-c(3))/r(3);
   zp = z - 0.0032*sin(7*atan2(x,y)).*(x.^2+y.^2).^2;
   k = 2*pi/7;
   ph = -0.25*k;
   # function at origin must be <0, and >0 far enough away.  w=0 defines the surface
   w = ((2*zp-2).^4+(0.2*x.*((zp*0.5).^2+1)).^2+(0.2*y.*((zp*0.5).^2+1)).^2);
   w = w+(1-((2.5*(x-3*sin(0*k+ph))).^2 + (2.5*(y-3*cos(0*k+ph))).^2))./(1+((2.5*(x-3*sin(0*k+ph))).^2 + (2.5*(y-3*cos(0*k+ph))).^2).^2);
   w = w+(1-((2.5*(x-3*sin(1*k+ph))).^2 + (2.5*(y-3*cos(1*k+ph))).^2))./(1+((2.5*(x-3*sin(1*k+ph))).^2 + (2.5*(y-3*cos(1*k+ph))).^2).^2);
   w = w+(1-((2.5*(x-3*sin(2*k+ph))).^2 + (2.5*(y-3*cos(2*k+ph))).^2))./(1+((2.5*(x-3*sin(2*k+ph))).^2 + (2.5*(y-3*cos(2*k+ph))).^2).^2);
   w = w+(1-((2.5*(x-3*sin(3*k+ph))).^2 + (2.5*(y-3*cos(3*k+ph))).^2))./(1+((2.5*(x-3*sin(3*k+ph))).^2 + (2.5*(y-3*cos(3*k+ph))).^2).^2);
   w = w+(1-((2.5*(x-3*sin(4*k+ph))).^2 + (2.5*(y-3*cos(4*k+ph))).^2))./(1+((2.5*(x-3*sin(4*k+ph))).^2 + (2.5*(y-3*cos(4*k+ph))).^2).^2);
   w = w+(1-((2.5*(x-3*sin(5*k+ph))).^2 + (2.5*(y-3*cos(5*k+ph))).^2))./(1+((2.5*(x-3*sin(5*k+ph))).^2 + (2.5*(y-3*cos(5*k+ph))).^2).^2);
   w = w+(1-((2.5*(x-3*sin(6*k+ph))).^2 + (2.5*(y-3*cos(6*k+ph))).^2))./(1+((2.5*(x-3*sin(6*k+ph))).^2 + (2.5*(y-3*cos(6*k+ph))).^2).^2);

   w = w- 0.75;
   endfunction;

GNU Octave