Blob Farm

# blob06

The blob in all its glory:

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.

$\frac{1}{{\left({x}^{2}+{y}^{2}+0.25\text{}{\left(z-1.\right)}^{2}\right)}^{0.5}}+\frac{1}{{\left({\left(x-0.943\right)}^{2}+{y}^{2}+0.25\text{}{\left(z+0.333\right)}^{2}\right)}^{0.5}}+\frac{1}{{\left({\left(x+0.471\right)}^{2}+{\left(y-0.816\right)}^{2}+0.25\text{}{\left(z+0.333\right)}^{2}\right)}^{0.5}}+\frac{1}{{\left({\left(x+0.471\right)}^{2}+{\left(y+0.816\right)}^{2}+0.25\text{}{\left(z+0.333\right)}^{2}\right)}^{0.5}}>4.8$

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