Registriert seit: 18. Feb 2005
286 Beiträge
Delphi 2010 Enterprise
|
Re: Algorithmus gesucht: Abstand von zwei Hexagons
17. Aug 2008, 18:14
Delphi-Quellcode:
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;
Delphi-Quellcode:
Schritte(4,4, 1,2) = 4; // Distanz ist nicht korrekt
Distanz(Punkt(4,4),Punkt(1,2)) = 3; // korrekte Distanz
[edit=Panthrax]Zum besseren Verständnis ein Bild angehangen.[/edit]
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
|