Das mit dem gegenseitigen Punkttest, kommt mir etwas Langsam vor.
Versuche gerade die Lösung von Hawkeye219 zu realisieren. Mir fehlt allerdings noch eine Zeile :-/
Code:
function PolygonInPolygon(PointArrayA, PointArrayB: Array of TPoint):boolean;
var RgnA, RgnB, RgnC: hdc;
begin
RgnA := CreatePolygonRgn(PointArrayA,Length(PointArrayA),Winding);
RgnB := CreatePolygonRgn(PointArrayB,Length(PointArrayB),Winding);
try
CombineRgn(
RgnC, //
handle to destination region
RgnA, //
handle to source region
RgnB, //
handle to source region
RGN_AND // region combining mode
);
(* Hier muss natürlich jetzt eine Abfrage stehen, ob es RgnB ein Polygon ist *)
finally
DeleteObject(RgnA);
DeleteObject(RgnB);
DeleteObject(RgnC);
end;
end;
Wie muss jetzt mein Vergleich jetzt Aussehen? Ich kenne mich mit Regionen in keinster Weise aus.
Für meinen Punkttest benutze ich übrigens auch die Windows
API Funktion.
Gruß
Chris