Exemples de manipulations de la rotation

 

$ExemplesRotations()
{
//L'instruction suivante récupère la rotation d'une prim
rotation rRotationActuelle = llGetRot();
//on peut afficher cette rotation
llOwnerSay("rRotationActuelle = " + (string)rRotationActuelle);

//Convertir cette rotation en vecteur
vector vRot2vect = llRot2Euler(rRotationActuelle);
//mais cela donne une rotation en radian
llOwnerSay("Vecteur en radians = " + (string)vRot2vect);
//Il vaut mieux avoir des degrés pour travailler
vRot2vect = llRot2Euler(rRotationActuelle) * RAD_TO_DEG;
llOwnerSay("Vecteur en degrés = " + (string)vRot2vect);
//Ce résultat est à comparer à celui obtenu dans Modifier : Objet : Rotation (degrés)

//A partir de là, on fait les opérations voulues sur le vecteur en degrés (comme à l'école)
//Multiplier les 3 angles par 2
vector vVectX2 = vRot2vect * 2;
llOwnerSay("vVectX2 = " + (string)vVectX2);
//Ajouter 12.5 degrés à X, 25 degrés à Y et 33.3 degrés à Z
vector vVectPlus = vVectX2 + <12.5, 25.0, 33.3>;
llOwnerSay("Vecteur vVectPlus = " + (string)vVectPlus);
//Et toutes autres sortes d'opérations (voir Vecteurs dans le Wiki)

//Il est temps maintenant de retourner notre vecteur vers une rotation
//On le convertit en radian puis en rotation
rotation rRotationSortie = llEuler2Rot(vVectPlus * DEG_TO_RAD);
llOwnerSay("Rotation en sortie = " + (string)rRotationSortie);

//Appliquer la rotation calculée
llSetRot(rRotationSortie);

//Ainsi par cette méthode on n'a jamais besoin de s'occuper des quaternions
//Garmin Kawaguichi
}

default
{
state_entry()
{
//Mettre la rotation àX=0.0 Y=0.0 Z=0.0
llSetRot(ZERO_ROTATION);
//Exemples de manipulation de rotation
llOwnerSay("__________ Exemples de manipulations de la rotation __________");

//Appel une fonction utlisateur
$ExemplesRotations();
}

touch_start(integer iNbClick)
{
$ExemplesRotations();
}

on_rez(integer iNumLiaison)
{
llResetScript();
}
}

 

 


ce n'est pas un script pratique mais plutôt un exemple. Mettez-le dans un cube et cliquez. (Ça fait passer le temps