De DigiWiki.
// Necklace Generator v1.0
float a = 0.6; // elipse parameter between 0 (line) and 1 (perfect circle)
float b = 0.3; // bending parameter 0 = flat
string bead = "test bead"; // object to use
integer numbeads = 30; // how many beads should the necklace have
vector offsetrot = <0,0,0>; // rotation of test bead
make()
{
integer n;
float t; // parameter
float d; // derivitive angle
vector p; // position
vector re; // rotation in euler
rotation rot; // re in rot format
for(n = 1;n <= numbeads;n++)
{
t = TWO_PI * ((float)n/(float)numbeads);
llOwnerSay((string)n);
p.x = llCos(t);
p.y = a * llSin(t);
p.z = b * llCos(t)*llCos(t) + 1;
p = p + llGetPos();
re.x = -1 * llSin(t) + DEG_TO_RAD * offsetrot.x;
re.y = llCos(t) + DEG_TO_RAD * offsetrot.y;
re.z = t + DEG_TO_RAD * offsetrot.z;
rot = llEuler2Rot(re);
llRezObject(bead, p, ZERO_VECTOR, rot, 0);
}
}
default
{
state_entry() {llSay(0, "Initialisation ...");}
touch_start(integer total_number) {make();}
}