// LSL script to rotate an orbiting object // If the rotating object is two linked spheres, the result // can resemble lunar motion around a planet (depending on // timer settings and network performance, etc.). vector rotationCenter; rotation Z_15; default { state_entry() { llSetTimerEvent( 3.0 ); vector startPoint = llGetPos(); rotationCenter = startPoint + < 3,3,3 >; Z_15 = llEuler2Rot( < 0, 0, 15 * DEG_TO_RAD > ); } touch_start(integer total_number ) { llTargetOmega( < 0, 1, 1 >, .2 * PI, 1.0 ); } timer() { vector currentPosition = llGetPos(); vector currentOffset = currentPosition - rotationCenter; // rotate the offset vector in the X-Y plane around the // distant point of rotation. vector rotatedOffset = currentOffset * Z_15; vector newPosition = rotationCenter + rotatedOffset; llSetPos( newPosition ); } }