Hallo Nikolas,
wenn du keine rein mathematische Lösung mehr findest, kannst du auch auf die Regionen-Befehle der
WinAPI ausweichen:
Delphi-Quellcode:
function RectPolygonIntersect (const R: TRect; const P: array of TPoint): Boolean;
var
RectRgn : HRGN;
PolyRgn : HRGN;
begin
RectRgn := CreateRectRgnIndirect(R);
PolyRgn := CreatePolygonRgn(P[0], Length(P), WINDING);
Result := (CombineRgn(RectRgn, RectRgn, PolyRgn, RGN_AND) <> NULLREGION);
DeleteObject(PolyRgn);
DeleteObject(RectRgn);
end;
Sollte sich diese Lösung als zu langsam erweisen, hilft vielleicht ein vorgeschalteter BoundingBox-Test, so wie es bereits in den vorigen Beiträgen vorgeschlagen wurde.
Gruß Hawkeye