jueves, 22 de marzo de 2012

Objeto moviendose en orbitra

Os dejo aqui el código de un objeto rotando alerdedor de una orbita

vector rotationCenter;  // point to rotate around.

default
{
    state_entry()
    {
        llSay( 0, "Hello, Avatar!");
        vector startPoint = llGetPos();
        rotationCenter = startPoint + < 1.9, 1.9, 1.9 >;
        // distance to the point of rotation should probably be a
        // function of the max dimension of the object.
    }

    touch_start(integer total_number)
    {
        llSay( 0, "Touched." );

        // Define a "rotation" of 10 degrees around the z-axis.
        rotation Z_15 = llEuler2Rot( < 0, 0, 15 * DEG_TO_RAD > );
       
        integer i;
        for( i = 1; i < 100; i++ )   // limit simulation time in case of
        {                            // unexpected behavior.
            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 );
        } 
        llSay( 0, "Orbiting stopped" );             
    }
}



Un saludo, Guillermo

No hay comentarios:

Publicar un comentario