argus Portal
Freund/in des Forums
Hallo
Ich mache gerade eine ärgerliche Beobachtung und möchte wissen, ob dies ein Bug ist, oder ob es einen Grund für dieses Verhalten gibt:
Ich rotiere ein Objekt per llSetRot in 10-Grad-Schritten.
Prinzip:
vector testrotationv;
rotation rotr;
float winkel;
testrotationv.x = winkel;
testrotationv.y = 0.0;
testrotationv.z = 0.0;
llSetRot(llEuler2Rot(testrotationv*DEG_TO_RAD));
Bei jedem Schritt lese ich per llGetRot aus und erhöhe "winkel":
rotr = llGetRot();
llOwnerSay((string)(llRot2Euler(rotr) * RAD_TO_DEG));
winkel += 10.0;
Rotiere ich um die x- bzw. z-Achse, so zählt das Script von 0 bis 180 und dann mit negativen Werten zurück zu 0 Grad. Dabei bleiben die Angaben der beiden jeweils anderen Achsen auf 0 Grad. Die x- und z-Achsen verhalten sich also wie man es erwartet.
Anders bei Rotation um die y-Achse:
Hier kurz die Ausgabe des Scriptes:
<0.00000, 0.00000, 0.00000>
<0.00000, 10.00000, 0.00000>
<0.00000, 20.00000, 0.00000>
<0.00000, 30.00000, 0.00000>
<0.00000, 40.00000, 0.00000>
<0.00000, 50.00000, 0.00000>
<0.00000, 60.00000, 0.00000>
<0.00000, 70.00001, 0.00000>
<0.00000, 80.00001, 0.00000>
<0.00000, 90.00000, 0.00000>
<180.00000, 79.99999, 180.00000>
<180.00000, 69.99997, 180.00000>
<180.00000, 60.00000, 180.00000>
<180.00000, 50.00000, 180.00000>
<180.00000, 40.00000, 180.00000>
<180.00000, 30.00000, 180.00000>
<180.00000, 20.00001, 180.00000>
<180.00000, 10.00001, 180.00000>
<180.00000, 0.00000, 180.00000>
<180.00000, -10.00001, 180.00000>
<180.00000, -20.00001, 180.00000>
<180.00000, -30.00000, 180.00000>
<180.00000, -40.00000, 180.00000>
<180.00000, -50.00002, 180.00000>
<180.00000, -60.00000, 180.00000>
<180.00000, -70.00001, 180.00000>
<180.00000, -79.99999, 180.00000>
<0.00000, -90.00000, 0.00000>
<0.00000, -80.00001, 0.00000>
<0.00000, -70.00001, 0.00000>
<0.00000, -60.00001, 0.00000>
<0.00000, -50.00000, 0.00000>
<0.00000, -40.00001, 0.00000>
<0.00000, -30.00002, 0.00000>
<0.00000, -20.00001, 0.00000>
<0.00000, -10.00002, 0.00000>
<0.00000, 0.00000, 0.00000>
Was soll das bedeuten ? Wegen dieses Verhaltens komme ich gerade bei einem Projekt nicht weiter. Ich möchte möglichst einen Workaround vermeiden oder so einfach wie möglich gestalten.
Hat jemand eine Idee ?
Gruss
Ich mache gerade eine ärgerliche Beobachtung und möchte wissen, ob dies ein Bug ist, oder ob es einen Grund für dieses Verhalten gibt:
Ich rotiere ein Objekt per llSetRot in 10-Grad-Schritten.
Prinzip:
vector testrotationv;
rotation rotr;
float winkel;
testrotationv.x = winkel;
testrotationv.y = 0.0;
testrotationv.z = 0.0;
llSetRot(llEuler2Rot(testrotationv*DEG_TO_RAD));
Bei jedem Schritt lese ich per llGetRot aus und erhöhe "winkel":
rotr = llGetRot();
llOwnerSay((string)(llRot2Euler(rotr) * RAD_TO_DEG));
winkel += 10.0;
Rotiere ich um die x- bzw. z-Achse, so zählt das Script von 0 bis 180 und dann mit negativen Werten zurück zu 0 Grad. Dabei bleiben die Angaben der beiden jeweils anderen Achsen auf 0 Grad. Die x- und z-Achsen verhalten sich also wie man es erwartet.
Anders bei Rotation um die y-Achse:
Hier kurz die Ausgabe des Scriptes:
<0.00000, 0.00000, 0.00000>
<0.00000, 10.00000, 0.00000>
<0.00000, 20.00000, 0.00000>
<0.00000, 30.00000, 0.00000>
<0.00000, 40.00000, 0.00000>
<0.00000, 50.00000, 0.00000>
<0.00000, 60.00000, 0.00000>
<0.00000, 70.00001, 0.00000>
<0.00000, 80.00001, 0.00000>
<0.00000, 90.00000, 0.00000>
<180.00000, 79.99999, 180.00000>
<180.00000, 69.99997, 180.00000>
<180.00000, 60.00000, 180.00000>
<180.00000, 50.00000, 180.00000>
<180.00000, 40.00000, 180.00000>
<180.00000, 30.00000, 180.00000>
<180.00000, 20.00001, 180.00000>
<180.00000, 10.00001, 180.00000>
<180.00000, 0.00000, 180.00000>
<180.00000, -10.00001, 180.00000>
<180.00000, -20.00001, 180.00000>
<180.00000, -30.00000, 180.00000>
<180.00000, -40.00000, 180.00000>
<180.00000, -50.00002, 180.00000>
<180.00000, -60.00000, 180.00000>
<180.00000, -70.00001, 180.00000>
<180.00000, -79.99999, 180.00000>
<0.00000, -90.00000, 0.00000>
<0.00000, -80.00001, 0.00000>
<0.00000, -70.00001, 0.00000>
<0.00000, -60.00001, 0.00000>
<0.00000, -50.00000, 0.00000>
<0.00000, -40.00001, 0.00000>
<0.00000, -30.00002, 0.00000>
<0.00000, -20.00001, 0.00000>
<0.00000, -10.00002, 0.00000>
<0.00000, 0.00000, 0.00000>
Was soll das bedeuten ? Wegen dieses Verhaltens komme ich gerade bei einem Projekt nicht weiter. Ich möchte möglichst einen Workaround vermeiden oder so einfach wie möglich gestalten.
Hat jemand eine Idee ?
Gruss