Hallo Dominik,
fertigen Code habe ich leider keinen für dich, aber er sollte nicht allzu schwer zu erstellen sein. Hier eine kleine Starthilfe:
Delphi-Quellcode:
function PDCompress(const Data: TIntegerDynArray; iDist: Integer): TIntegerDynArray;
var
i, n: Integer;
begin
SetLength(Result, Length(Data));
Result[0] := Data[0];
n := 1;
for i := Succ(Low(Data)) to Pred(High(Data)) do
if Distance(Data[i], Data[Pred(i)], Data[Succ(i)]) > iDist then
begin
Result[n] := Data[i];
Inc(n);
end;
Result[n] := Data[High(Data)];
SetLength(Result, Succ(n));
end;
Da ein solcher Filter die Originaldaten nicht verändert kannst du ihn bei verändertem Viewport einfach nochmal anwenden.
Freundliche Grüße