Name: Domino Fall

Image:

domino fal Sploland

Description: Touch the gray mat and 9 dominos appear. Push over the small domino and it will fall, knocking over a larger domino, which knocks over a larger domino.
Each domino is 1.5 times higher, wider, and thicker than the previous domino. The center of mass of each domino is 1.5 times higher as well. So the potential enegy of each domino is 1.5^4 = 5 times larger than the previous domino. The largest domino releases 5^8 times more energy when it falls than the first one.

Creator: Patio Plasma

Location: http://slurl.com/secondlife/SploLand/129/45/26
http://slurl.com/secondlife/midnightcity/128/128/26/   ( to get here first teleport to http://slurl.com/secondlife/midnightcity/128/128/26/ then walk or teleport to the exhibit)

Graphics:

dominofall  text  

Here is the texture for a domino.

domino image

Notecard

 

Lessons: This exhibit runs using the built-in physics engine of SL, Havok 4.

Each domino has a script in it which sets a timer for 60 seconds. After 60 seconds the domino will die.

The major script details illuminated by this exhibit are rezing physical prims and handling lists.

The dominos to be rezed by the base must be placed into the contents of the base.
The name of each domino is placed in a list, the name must exactly match the name of the domino in the contents of the prim, including capitalization.

This command rezes the dominos  llRezObject(name, llGetPos()+<offset,0,height>, ZERO_VECTOR, llGetRot(), 0);

llGetPos() gets the vector position of the center of mass of the base prim, a vector offset is added to this to place the center of mass of each domino.

The ZERO_VECTOR is a velocity vector of zero, the dominos start at rest.

 

// Script to rez dominos placed in the contents of this object from a list of their names and offset positions.

//script by Patio Plasma permission is granted under the creative commons for others to copy modify use and distribute this script as long as the creators name is included in the script.

 

//create a list of names for objects in the main prim contents, put these objects into the prim contents.
list dominoNames = ["dominoT12test","dominoT11test", “dominoT10test”, “dominoT9test”, “dominoT8test”, “dominoT7test”, “dominoT6test”, “dominoT5test”, “dominoT4test”, “dominoT3test”, “dominoT2test”, “dominoT1test”];
//this is the offset for the location of each rezed object
list dominoOffsets =[-4.5,-2.0,-0.2,1.25,2.0, 2.7,3.3,3.6,3.8,4.0,4.1,4.2];
list dominoHeights =[2.57,2.0,1.5,1.0,0.75,0.5,0.375 ,0.25, 0.19, 0.13, 0.095, 0.065];

default

{
state_entry()
{
llSay(0, "Let there be dominos!");
}
// touch the rezer to rez the objects
touch_start(integer total_number)
{
string name;
float offset;
float height;
integer i = 0;
integer end = llGetListLength(dominoNames);
for (; i<end; ++i)
{
name = llList2String(dominoNames,i);
offset = llList2Float(dominoOffsets,i);
height = llList2Float(dominoHeights,i);
llOwnerSay( (string)i);
llRezObject(name, llGetPos()+<offset,0,height>, ZERO_VECTOR, llGetRot(), 0);
goto wait
}

}
}
Wait
{
set timer(60)
on touch
{
say “wait”
}
}
timer
{
go to default
}

 

Comments: The exhibit was built using the Havok 1 physics engine, when Havok 4 was introduced it no longer worked, The dominos would not knock down the next larger domino. I had to reduce the thickness of each domino to make it less stable so that the previous domino would knock it over.

This exhibit came from real life. Here is an image of the real life exhibit at the Exploratorium. The largest domino is as big as a headstone for a grave.

domino fall Exploratorium

There is a webpage about the real life exhibit.

 

Patio Plasma

Copyright 2007

Updated 28 May 2007