Foamy Ether - A Framework for a
Theory Of Everything

Conceived and written by Peter C.M. Hahn C.E.T.
 
Copyright © 2005-2007

 

//////////////////////////////////////////////////

// 3Darray.thd

// This shows a 3D ether array.

//////////////////////////////////////////////////

 

// set background color

scene.backColor=RGB(92,92,98);

 

// turn gravity off

scene.gravity={0,0,0};

 

// remove shadows for faster rendering

scene.shadow = false;

 

// use degrees as metric for angles

factory.useDegrees = true;

 

// turn collision detection off so things don't blow up

factory.detectCollision = false;

 

var spngCnst = .00000001; // set spring constant

var dmpCnst = .0000005; // set damper constant

 

// set colors

var green = RGB(108, 255, 108);

 

// build array of spheres

var width = 7; // enter number of balls for array width

var depth = 7; // enter number of balls for array depth

var height = 7; // enter number of balls for array height

var spacing = 20; // enter spacing between balls

 

// position camera

scene.camera = {width*spacing/4, height*spacing, -depth*spacing};

// point cammera

scene.lookAt = {width*spacing/2, height*spacing/3-5, depth*spacing/2};

 

// build 3D array of balls

var s = array();

for (var x=0; x < width; x++) {

   s.append(array());

   for (var y=0; y < height; y++) {

      s[x].append(array());

      for (var z=0; z < depth; z++) {

         var ball = Sphere(1, {x*spacing,y*spacing,z*spacing});

         ball.color = green;

         //ball.visible = false;

        s[x][y].append(ball);

         // set all outer edge balls as stationary

         if (x==0||x==width-1||z==0||z==depth-1||y==0||y==height-1){

            ball.static = true;

         }

      }//z

   }//y

}//x

 

// build 3D array of springs and dampers attaching to balls on x axis

var spx = array();

var dpx = array();

for (x=0; x < width-1; x++) {

   spx.append(array());

   dpx.append(array());

   for (var y=0; y < height; y++){

      spx[x].append(array());

      dpx[x].append(array());

      for (var z=0; z < depth; z++) {

         var sprng = Spring(s[x][y][z],{0,0,0},s[x+1][y][z],{0,0,0});

         sprng.springConstant = spngCnst;

         spx[x][y].append(sprng);

         var dmpr = Damper(s[x][y][z],{0,0,0},s[x+1][y][z],{0,0,0});

         dmpr.damperConstant = dmpCnst;

         dmpr.color = green;

         dpx[x][y].append(dmpr);

      }//z

   }//y

}//x

 

// build array of springs and dampers attaching to balls on z axis

var spz = array();

var dpz = array();

for (x=0; x < width; x++) {

   spz.append(array());

   dpz.append(array());

   for (var y=0; y < height; y++){

      spz[x].append(array());

      dpz[x].append(array());

      for (var z=0; z < depth-1; z++) {

         var sprng = Spring(s[x][y][z],{0,0,0},s[x][y][z+1],{0,0,0});

         sprng.springConstant = spngCnst;

         spz[x][y].append(sprng);

         var dmpr = Damper(s[x][y][z],{0,0,0},s[x][y][z+1],{0,0,0});

         dmpr.damperConstant = dmpCnst;

         dmpr.color = green;

         dpz[x][y].append(dmpr);

      }//z

   }//y

}//x

 

// build array of springs and dampers attaching to balls on y axis

var spy = array();

var dpy = array();

for (x=0; x < width; x++) {

   spy.append(array());

   dpy.append(array());

   for (var y=0; y < height-1; y++){

      spy[x].append(array());

      dpy[x].append(array());

      for (var z=0; z < depth; z++) {

         var sprng = Spring(s[x][y][z],{0,0,0},s[x][y+1][z],{0,0,0});

         sprng.springConstant = spngCnst;

         spy[x][y].append(sprng);

         var dmpr = Damper(s[x][y][z],{0,0,0},s[x][y+1][z],{0,0,0});

         dmpr.damperConstant = dmpCnst;

         dmpr.color = green;

         dpy[x][y].append(dmpr);

      }

   }

}

 

// render scene

WaitFrame();

   

Peter C.M. Hahn C.E.T.