Ich habe mir den Algorithmus auch mal näher angeschaut.
Die zeitintensive procedure simplifyvector kann entfallen, wenn addsquarevector vorher auf equalpoints prüft und nur
nicht vorhandene Werte in die V-Liste aufnimmt, also nur, wenn IndexOfVector minus 1 ist.
Delphi-Quellcode:
function IndexOfVector (const sx, sy, ex, ey: integer): integer;
var
M: integer;
begin
Result:= -1;
for M:= 1 to VNum do
if equalpoints (sx, sy, V[M].sx, V[M].sy) then
if equalpoints (ex, ey, V[M].ex, V[M].ey) then
begin
Result:= M;
Break;
end;
end;