Blob Farm

blob06

The blob in all its glory:

Twirl with your mouse

This is an attempt to make a case with some mounting ears, but all just mathematically. You can see that it was not much of a success. The Mathematica function (RegionPlot3D) does not handle sharp edges elegantly. Though to be fair, the GNU Octave function isosurface does not either. I think that is because they are both working from a 3D grid.

1 ( x 2 + y 2 + 0.25 ( z - 1. ) 2 ) 0.5 + 1 ( ( x - 0.943 ) 2 + y 2 + 0.25 ( z + 0.333 ) 2 ) 0.5 + 1 ( ( x + 0.471 ) 2 + ( y - 0.816 ) 2 + 0.25 ( z + 0.333 ) 2 ) 0.5 + 1 ( ( x + 0.471 ) 2 + ( y + 0.816 ) 2 + 0.25 ( z + 0.333 ) 2 ) 0.5 > 4.8

Click on the snapshot to download the blob's stl file. ../snapshots/blob06.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);
   # function at origin must be <0, and >0 far enough away.  w=0 defines the surface
   th = atan2(x,y);
   r = sqrt(x.^2+y.^2);
   phi = th + (r+r.^2)*0.05;
   w = ((x/70).^4+(y/70).^4+(z/30).^4).^(-8.0);
   w=w+((1/4)*((x+y+40+134)/(4*1.4))./(1.0+((((x+67)/4).^2+((y+67)/4).^2).^0.5-2).^2))./(1+((z-20)/20).^2);
   w=w+((1/4)*((x-y+40+134)/(4*1.4))./(1.0+((((x+67)/4).^2+((y-67)/4).^2).^0.5-2).^2))./(1+((z-20)/20).^2);
   w=w+((1/4)*((-x+y+40+134)/(4*1.4))./(1.0+((((x-67)/4).^2+((y+67)/4).^2).^0.5-2).^2))./(1+((z-20)/20).^2);
   w=w+((1/4)*((-x-y+40+134)/(4*1.4))./(1.0+((((x-67)/4).^2+((y-67)/4).^2).^0.5-2).^2))./(1+((z-20)/20).^2);
   w=w-1;

   endfunction;


GNU Octave