Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Weg im 2D Koordinatensystem merken

  Alt 19. Aug 2014, 07:25
Hmm... Im Grunde genommen läuft mein Vorschlag darauf hinaus, nur die Richtungsänderungen zu protokollieren. Dazu wird bei jeder Richtungsänderung nur der neue Winkel und die alte zurückgelegte Strecke benötigt. Das sind 2 Werte. Zusätzlich merkt man sich noch alle 100ms den zurückgelegten Weg, den man natürlich *nicht* in einer Historie ablegt. Somit ist diese Version genau dann platzsparender, wenn der Richtungswechsel seltener als alle 100ms vorkommt, wovon auszugehen ist, da die Richtungswechsel manuell durchgeführt werden.
Delphi-Quellcode:
Type
  TVector = Record
     Distance,
     Direction : Double;
  end;
...
// Alle 100 ms
Player.Last.Distance := TotalDistance(CurrentPosition, Player.LastPosition);

// Bei Richtungswechsel
Player.Last.Distance := TotalDistance(CurrentPosition, Player.LastPosition);
if Player.Last.Distance > 0 then
  Player.History.Add(Player.Last);

Player.Last.Distance := 0;
Player.Last.Angle := NewAngle;
Player.LastPosition := CurrentPosition;
  Mit Zitat antworten Zitat