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;