Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Rotieren mit Zufallszahlen

  Alt 18. Okt 2021, 18:37
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
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (18. Okt 2021 um 19:05 Uhr)
  Mit Zitat antworten Zitat