|
Foamy Ether - A Framework for a Theory Of Everything Conceived and written by
Peter C.M. Hahn
C.E.T. |
//////////////////////////////////////////////////
// photonTravelling.thd
// This shows 2D ether with sine wave traveling
// from left to
right.
//////////////////////////////////////////////////
// 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;
// set colors
var green = RGB(108, 255, 108);
var white = RGB(200, 200, 200);
// choose some
default material
//Material
(density, springConstant, dampingConstant,
staticFriction, dynamicFriction,
thresholdVelocity);
var mat = Material(1e-8, .0001, .00001, 1, 1);
factory.material = mat ;
// set spring
and damper constants
var spngCnst
= .00000001;
var dmpCnst
= .00000005;
// build array
of balls
var width = 95; // enter number of balls for array width
var depth = 31; // enter number of balls for array depth
var spacing = 20; // enter spacing between balls
var ball = "";
// position
camera in middle of array
// consider
camera to be hovering over array looking down on x z plane
scene.camera =
{width*spacing/2-40,580,depth*spacing/2};
// point camera
down at middle of array
scene.lookAt =
{width*spacing/2-40, 0, depth*spacing/2};
var s = array();
for (var x=0; x < width; x++) {
s.append(array());
for
(var z=0; z < depth; z++) {
var
ball = Sphere(2, {x*spacing,0,z*spacing});
ball.visible
= false;
s[x].append(ball);
// set all outer edge balls as
stationary
if
(x==0||x==width-1||z==0||z==depth-1){
ball.static
= true;
}
}
}
// build array
of springs and dampers attaching to spheres on x axis
var spx
= array();
var dpx
= array();
var dmpr
= "";
var sprng
= "";
for
(x=0; x < width-1; x++) {
spx.append(array());
dpx.append(array());
for
(var z=0; z < depth; z++) {
// make spring and attach to
adjacent spheres
sprng = Spring(s[x][z],{0,0,0},s[x+1][z],{0,0,0});
sprng.springConstant
= spngCnst;
spx[x].append(sprng);
// make damper and attach to
adjacent spheres
var dmpr
= Damper(s[x][z],{0,0,0},s[x+1][z],{0,0,0});
dmpr.damperConstant
= dmpCnst;
// color every 5th damper green on
x axis
if(z%5 == 1){
dmpr.color
= green;
}else{
dmpr.color
= white;
}
dpx[x].append(dmpr);
}
}
// build array
of springs and dampers attaching to spheres on z axis
var spz
= array();
var dpz
= array();
for
(x=0; x < width; x++) {
spz.append(array());
dpz.append(array());
for
(var z=0; z < depth-1; z++) {
// make spring and attach to
adjacent spheres
var sprng
= Spring(s[x][z],{0,0,0},s[x][z+1],{0,0,0});
sprng.springConstant
= spngCnst;
spz[x].append(sprng);
// make damper and attach to
adjacent spheres
var dmpr
= Damper(s[x][z],{0,0,0},s[x][z+1],{0,0,0});
dmpr.damperConstant
= dmpCnst;
// color every 5th damper green on
z axis
if(x%5 == 1){
dmpr.color
= green;
}else{
dmpr.color
= white;
}
dpz[x].append(dmpr);
}
}
// sine wave
sweep from left to right
var delta = 35; //.2 or .1 enter wavelength in degress
var amp = 4; //4 or 6 enter amplitude
for (var wave=0; wave < width-22; wave++){
for (x=wave; x < wave+21; x++){
for (var
z=8; z < 23; z++){
var
trim = 1-(abs(15-z)*.14);
s[x][z].position
= {x*spacing,0,z*spacing+trim*amp*spacing*sin((x-wave+.2)*delta)};
}
}
WaitFrame();
// restore position
for (var
z=8; z < 23; z++){
s[wave][z].position
= {wave*spacing,0,z*spacing};
}
};
|
Peter C.M. Hahn C.E.T. |
|