Blob Farm


The blob in all its glory:

Twirl with your mouse

An an odd little shape that is a little less symmetric than it looks at first. It was made by an algebraic combination of two ellipsoids.

Click on the snapshot to download the blob's stl file. ../snapshots/blob62.png
Octave Code:
  # name of the blob
  project = "blob62";  
   # 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.111111.*((-0.25E1)+0.1E1.*x.^4+0.2E2.*y+(-0.5E1).*x.^2.*y+ ...
0.2E1.*x.^2.*y.^2+(-0.5E1).*y.^3+0.1E1.*y.^4+0.1375E2.*z.^2+ ...
0.45625E1.*x.^2.*z.^2+(-0.2E2).*y.*z.^2+0.45625E1.*y.^2.*z.^2+ ...


  # this is for distorting the grid before applying the function
  # note that the undistorted grid will be used to make the stl file
  # just set it to x3=x; y3=y; z3=z; if no warping is needed.
  function [x3,y3,z3]= prewarp(x,y,z)
    R =300;  # center of sphere is at (R+X0,0,0) with radius R (passing through (X0,0,0) ) 
    X0 = 60; # this means that parts of the blob near [X0,0,0] will stay near that point.
    # calculate the inverted coordinate of each point in the 3D grid (x3,y3,z3)
    x2 = x-R-X0;  y2=y;   z2 = z; # intermediate values
    r2 = R*R./(x2.^2+y2.^2+z2.^2);
    x3 = x2.*r2+R+X0;  y3 = y2.*r2;  z3 = z2.*r2; 

  c_outer = [0,0,0];
  r_outer = [55,55,55]; # size

 xmin = 0;
 xmax = 250;

  source("../octave/func2stl_v01.m");  # do all the calculations
GNU Octave