LSL Pour les nuls: Simples rotations

Répondre
Partager Rechercher
Les rotations sont souvent mal comprises où appréhender dans LSL.

L'art de faire compliqué quand on peut faire simple...


une fonction très simple presque inutile peut vous aidez..

Citation :
Vous donnez une valeur à x,y,z

en degrés 0 .... 360
ou
en radians 0 to 2*PI

et cela vous donne un qad de rotation exigée par lsl dans ses fonctions de rotations.
Code PHP:

rotation xyzRot(float x,float y,float zinteger type )
{
    if (
type == DEG)
        return 
llEuler2Rot(< xy>*DEG_TO_RAD);
    else
        return 
llEuler2Rot(< xy>);

Insérer le script ci dessous dans une box et face à vous cliquez 1 seule fois ;-)

Code PHP:

integer RAD 0;
integer DEG = -1;
integer N;

rotation xyzRot(float x,float y,float zinteger type )
{
    if (
type == DEG)
        return 
llEuler2Rot(< xy>*DEG_TO_RAD);
    else
        return 
llEuler2Rot(< xy>);
}
default
{
    
state_entry()
    {
        
llSetRotxyzRot10,30,45,DEG ));
        
        
llSetColor( <1.0,0.0,1.0>,0);
        
llSetColor( <1.0,1.0,1.0>,1);
        
llSetColor( <0.0,0.5,1.0>,2);
        
llSetColor( <0.0,1.0,0.0>,4);
        
llSetColor( <0.0,0.0,0.0>,5);
    }

    
touch_start(integer total_number)
    {
        
llSetRotxyzRot0,0,0,RAD ));   // ZERO //
        
        
llSleep (2);
        
        
llSetRotxyzRotPI/4,PI,PI/4,RAD) ); // PI/4 = 45 degrés
        
        
llSleep (2);
        
        
        
N=0;
        while (
N<360)
            
llSetRotxyzRot0,N+=10,0DEG) );    // Y rotate //    

        
while (N>0)
            
llSetRotxyzRotN-=10,0,0DEG) );  // -X rotate //

        
while (N<360)
            
llSetRotxyzRot0,0,N+=10DEG) );    // Z rotate //    
    
}

Simple et démonstratif....
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés