|
Foamy Ether - A Framework for a Theory Of Everything Conceived and written by
Peter C.M. Hahn
C.E.T. |
//////////////////////////////////////////////////
//
3DetherFunnelFlowingDownEarth.thd
// This demonstrates ether inflow.
//////////////////////////////////////////////////
// set
background color
scene.backColor=RGB(80,80,80);
// turn gravity
off
scene.gravity={0,0,0};
// set camera
scene.camera =
{-220,120,-250};
scene.lookAt =
{20,20,0};
// choose some
default material
//Material
(density, springConstant, dampingConstant,
staticFriction, dynamicFriction,
thresholdVelocity);
var mat = Material(1e-7, .0001, .00001, 1, 1);
factory.material = mat ;
// use degrees
as metric for angles
factory.useDegrees = true;
// build earth
var t = Texture("earth.jpg");
var earth = Sphere(100);
earth.useTexture(t);
earth.rotate(90,10,-120);
earth.move(0,-90,0);
earth.sharpness = 40;
var spngCnst
= .00000001; // set spring constant
var dmpCnst
= .0000005; // set damper constant
// build array
of balls
var width = 1; // enter number of balls for array width
var depth = 1; // enter number of balls for array depth
var height = 13; // enter number of balls for array height
var spacing = 15; // enter spacing between balls
var taper = 3.0; // enter amount of taper on array (use .0)
var funnel =
-taper/spacing; // calculate funnel ratio
var x = -width;
var z = -depth;
//set RGB and
alpha values for damper
var red = 1;
var green = 1;
var blue = 1;
var alpha = 0;
// build 3D
array of balls
var s = array();
for (var y=0; y < height; y++) {
s.append(array());
for (var xi=0; xi <= 2*width; xi++) {
s[y].append(array());
for (var
zi=0; zi <= 2*depth; zi++){
// add ball to array
var
ball = Sphere(1, {x*(spacing+y*taper),y*spacing,z*(spacing+y*taper)});
if (xi==0 || xi==width*2 || zi==0 || zi==depth*2 || y==0 ||
y==height){
ball.color
= RGB(255,50,50);
}
else {
ball.visible
= false;
}
s[y][xi].append(ball);
// set all outer edge balls as
stationary
if (x==abs(width)||y==0||y==height-1||z==abs(depth)){
ball.static
= true;
}
z++;
}//zi
z = -depth;
x++;
}//xi
x = -width;
}//y
// build 3D
array of springs and dampers attaching to balls on x axis
var spx
= array();
var dpx
= array();
for
(y=0; y < height; y++) {
for (var
x=0; x < 2*width; x++){
spx.append(array());
dpx.append(array());
for
(var z=0; z <= 2*depth; z++) {
var sprng
= Spring(s[y][x][z],{0,0,0},s[y][x+1][z],{0,0,0});
sprng.color
= RGB(10,10,10,0);
sprng.springConstant
= spngCnst;
spx[y].append(sprng);
var dmpr
= Damper(s[y][x][z],{0,0,0},s[y][x+1][z],{0,0,0});
dmpr.damperConstant
= dmpCnst;
// make back z wall yellow
if (z==0){
dmpr.color
= RGB(255,255,255);
}
if (z==depth*2){
dmpr.color
= RGB(200,200,100);
}
if (z>0 &&
z<depth*2) {
dmpr.visible
= false;
sprng.visible
= false;
}
dpx[y].append(dmpr);
}
}
}
// build 3D
array of springs and dampers attaching to balls on z axis
var spz
= array();
var dpz
= array();
for
(y=0; y < height; y++) {
for (var
x=0; x <= 2*width; x++){
spz.append(array());
dpz.append(array());
for
(var z=0; z < 2*depth; z++) {
var sprng
= Spring(s[y][x][z],{0,0,0},s[y][x][z+1],{0,0,0});
sprng.springConstant
= spngCnst;
sprng.color
= RGB(0,10,0,0);
spz[y].append(sprng);
var dmpr
= Damper(s[y][x][z],{0,0,0},s[y][x][z+1],{0,0,0});
dmpr.damperConstant
= dmpCnst;
// make back x wall purple
if (x==0){
dmpr.color
= RGB(255,255,255);
}
if (x==width*2){
dmpr.color
= RGB(180,100,180);
}
if (x>0 &&
x<width*2) {
dmpr.visible
= false;
sprng.visible
= false;
}
dpz[y].append(dmpr);
}
}
}
// build 3D
array of springs and dampers attaching to balls on y axis
var spy = array();
var dpy
= array();
for
(y=0; y < height-1; y++) {
for (var
x=0; x <= 2*width; x++){
spy.append(array());
dpy.append(array());
for
(var z=0; z <= 2*depth; z++) {
var sprng
= Spring(s[y][x][z],{0,0,0},s[y+1][x][z],{0,0,0});
sprng.springConstant
= spngCnst;
sprng.color
= RGB(0,10,0,0);
spy[y].append(sprng);
var dmpr
= Damper(s[y][x][z],{0,0,0},s[y+1][x][z],{0,0,0});
dmpr.damperConstant
= dmpCnst;
// make back z wall yellow and
back x wall purple
if (z==0){
dmpr.color
= RGB(255,255,255);
}
if (z==depth*2){
dmpr.color
= RGB(200,200,100);
}
if (x==width*2){
dmpr.color
= RGB(180,100,180);
}
if ((z>0 &&
z<depth*2)&& x!=0 && x!=width*2) {
dmpr.visible
= false;
sprng.visible
= false;
}
dpy[y].append(dmpr);
}
}
}
// simulate
scene
var xmove
= -width;
var zmove
= -depth;
//move all balls
down 'spacing' number times
for (var i=0; i<spacing; i++){
for (var y=0; y < height; y++) {
//print("y=",y,
newline);
for (var
xi=0; xi <= 2*width; xi++) {
for (var
zi=0; zi <= 2*depth; zi++) {
s[y][xi][zi].move(funnel*xmove, -1,
funnel*zmove);
zmove++;
}//z
zmove =
-depth;
xmove++;
}//x
xmove =
-width;
}//y
WaitFrame();
};
|
Peter C.M. Hahn C.E.T. |
|