Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#11

Re: Algorithmus gesucht: Abstand von zwei Hexagons

  Alt 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]
Miniaturansicht angehängter Grafiken
hexagondistanz_165.png  
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat