Einzelnen Beitrag anzeigen

TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#4

Re: Überschneiden zweier Rechtecke

  Alt 19. Jun 2006, 13:13
Das mit dem Multiplizieren wäre möglich, aber äußerst unschön, außerdem müsste ich dann immer erst TRects erstellen.

Diese Funktion liefert zumindest bei gleichen Rechtecken "true", aber ich glaube sonst nicht immer:

Delphi-Quellcode:
function RectIntersectFloat(P1x, P1y, P1sizeX, P1sizeY, P2x, P2y, P2sizeX, P2sizeY: Extended):Boolean;
begin
  result := true;
  if (P1x >= P2x+P2sizeX) or
     (P1y >= P2y+P2sizeY) or
     (P2x >= P1x+P1sizeX) or
     (P2y >= P1y+P2sizeY) then result:=false;
end;
Wobei sie nach meinen Überlegungen richtig sein müsste... ich schau mal.

_____

Cool, Hawkeye schau ich mir mal an!

Edit: Die Funktion tuts auch:

Delphi-Quellcode:
function RectIntersectFloat(P1x, P1y, P1sizeX, P1sizeY, P2x, P2y, P2sizeX, P2sizeY: Extended):Boolean;
begin
  result := true;
  if (P1x > P2x+P2sizeX) or
     (P1y > P2y+P2sizeY) or
     (P2x > P1x+P1sizeX) or
     (P2y > P1y+P2sizeY) then result:=false;
end;
Es sei denn ich habe irgendeinen speziellen Testfall übersehen! Wenn doch nicht melde ich mich nochmal! Danke!
  Mit Zitat antworten Zitat