function Distanz(const P1, P2: TPoint): Integer; var
DeltaX, DeltaY: Integer; begin
DeltaX:=Abs(P1.X-P2.X);
DeltaY:=Abs(P1.Y-P2.Y); if 2*DeltaY <= DeltaX then
Result:=DeltaX else
Result:=DeltaX+DeltaY { jeder 2. "X-Schritt" entspricht einem Y-Schritt }
-((DeltaX+1) div 2) { X-Koordinate, X-Distanz und Y-Richtung sind bedeutsam }
+Integer(Odd(DeltaX) and (
(Odd(P1.X) and (P1.Y > P2.Y)) or (not Odd(P1.X) and (P1.Y < P2.Y))
))
; end;