LlRotBetween/de
LSL Portal | Funktionen | Ereignisse | Typen | Konstanten | Datenflusskontrolle | Script Sammlung | Tutorien |
Beschreibung
Funktion: rotation llRotBetween( vector Anfang, vector Ende );21 | Funktions ID |
0.0 | Verzögerung |
10.0 | Energie |
Gibt die Rotation zwischen der Richtung am Anfang und der Richtung am Ende.
• vector | Anfang | |||
• vector | Ende |
Spezifikationen
Anfang und Ende sind Richtungen relativ zum Ursprung <0.0, 0.0, 0.0>. Wenn Koordinaten relativ zu einem anderen Ursprung vorliegen, subtrahiere den Ursprung von den Eingangsvektoren.
Warnungen
Anfang * llRotBetween(Anfang, Ende) == Ende
ist nur dann wahr, wenn Anfang und Ende den selben Betrag haben, sowie keiner den Betrag Null hat (siehe #Notizen für eine Abhilfe).
Beispiele
<lsl>llRotBetween(<1.0, 0.0, 0.0>, <0.0, -1.0, 0.0>) // wird <0.00000, 0.00000, -0.70711, 0.70711> zurück geben, (was -90° um die z Achse repräsentiert)
llRotBetween(<0.0, 0.0, 0.0>, <0.0, -1.0, 0.0>) // wird <0.00000, 0.00000, 0.00000, 1.00000> zurück geben (was eine drehung von 0° um alle Achsen repräsentiert),
// da <0.0, 0.0, 0.0> keine Richtung hat.</lsl>Notizen
Diese Funktion stellt den Betrag der Quaternion so ein, dass Anfang * llRotBetween(Anfang, Ende) == Ende
wahr ist, soweit keiner der Vektoren den Betrag Null hat. Sie müssen nicht den selben Betrag haben.
<lsl>rotation RotBetween(vector Anfang, vector Ende) //adjusts quaternion magnitude so (start * return == end)
{//Notiz des Autors: Ich hatte nie eine Anwendungsmöglichkeit hierzu, aber es ist gut zu wissen, falls man es mal braucht.
rotation rot = llRotBetween(Anfang, Ende); if(Anfang) { if(Ende) { float d = llSqrt(llVecMag(Ende) / llVecMag(Anfang)); return <rot.x * d, rot.y * d, rot.z * d, rot.s * d>; } } return rot;
}//Strife Onizuka</lsl>
Siehe auch
Funktionen
• | llAngleBetween | – | Berechnet den Winkel zwischen zwei Rotationen |