Hallo Emil,
Du könntest evtl. folgende Idee benutzen:
Definiere einen minimalen Winkel in Grad, den Du noch als „Drehung“ in eine Koordinatenrichtung akzeptieren würdest: Z.B. Delta_Wi_min = 5°.
Dann erzeugst Du Integer-Zufallszahlen für ein Vielfaches für Delta_Wi_min für alle 3 Koordinatenachsen x, y, z und evtl. auch für die Drehrichtung (+/- oder 0 für Stillstand):
Delphi-Quellcode:
VAR
Delta_Wi: Extended; //(Oder Double)
Winkel_neu_x, Winkel_neu_y, Winkel_neu_z,
Winkel_alt_x, Winkel_alt_y, Winkel_alt_z: Extended; // (Oder Double)
Min_Vielfach , Max_Vielfach , Vielfach: Integer;
CONST
Grad_To_RAD: Extended = 0.17453292519943295769E-1; //= Pi()/180;
...
Delta_Wi:= Delta_Wi_min* Grad_To_RAD;
...
Min_Vielfach:= 1; // Je nach Rotationsgeschwindigkeit oder evtl. auch -2
Max_Vielfach:= 3; // Je nach Rotationsgeschwindigkeit
// Du kannst evtl auch die Drehrichtung extra randomisieren, wenn Min_Vielfach positiv bleibt:
Vielfach:= RandomRange(-1, +1) * RandomRange(Min_Vielfach, Max_Vielfach);
Winkel_neu_x := Winkel_alt_x + Vielfach * Delta_Wi;
Vielfach:= RandomRange(-1, +1) * RandomRange(Min_Vielfach, Max_Vielfach);
Winkel_neu_y := Winkel_alt_y + Vielfach * Delta_Wi;
Vielfach:= RandomRange(-1, +1) * RandomRange(Min_Vielfach, Max_Vielfach);
Winkel_neu_z := Winkel_alt_z + Vielfach * Delta_Wi;
...
Gruß, Andreas