![]() |
AW: Kürzester rotationsweg bei einem Kreis?
Klar kannste integer auch verwenden.
Im Grunde macht es in diesem Fall keinen Unterschied, da beide Datentypen (Pointer & Integer) gleichgroß sind. Meine Variante ist aber bei größeren Datenstrukturen eleganter, da nicht Daten kopiert werden muss (und somit auch schneller)! |
AW: Kürzester rotationsweg bei einem Kreis?
Aufjedenfall funktioniert es!^^
Musste allerdings beim kalkulieren der rotation noch ne condition eibauen, damit der wraparound von 0 nach 259 funktioniert.
Delphi-Quellcode:
edit: in diesem fall sit dein weg sogar etwas langsamer, da die pointer erst dereferenziert werden müssen.
if getShortestRotation(FRotation, FRotationGoal) < 0 then
begin if FRotation > 0 then begin FRotation := Abs((FRotation - 1) mod 360); end else begin FRotation := 359; end; end else begin FRotation := Abs((FRotation + 1) mod 360); end; |
AW: Kürzester rotationsweg bei einem Kreis?
Hmm stimmt, hab das nicht bedacht.. Dann schreibs um bitte :D
|
AW: Kürzester rotationsweg bei einem Kreis?
schon geschehen^^.
Aufjedenfall VIELEN DANK^^ |
AW: Kürzester rotationsweg bei einem Kreis?
Keine Ursache ^^
|
AW: Kürzester rotationsweg bei einem Kreis?
Wenn du noch Lust hast kannst du das testen. Hab es beim telefonieren geschrieben und muss jetzt weg. Schade zum wegwerfen:
Delphi-Quellcode:
Wie gesagt, muss noch richtig getestet werden.
procedure TForm1.Button1Click(Sender: TObject);
var a, b, r1, r2: Integer; begin a := 270; b := 90; //if a = b nicht vergessen if a > b then begin r1 := -(a - b); r2 := b + 360 - a; end else begin r1 := (b - a) - 360; r2 := b - a; end; ShowMessage(IntToStr(r1) + ' / ' + IntToStr(r2)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz