Wie Sie überprüfen, ob der Punkt X, Y innerhalb eines Polygons befindet.
Punkt im polygon
Anscheinend geht diese Lösung überprüfen, wie viele Male Sie Kreuz
eine Linie vom Punkt X, Y, um den äußeren Rand des Bildschirms übergeben.
Ich habe ehrlich gesagt nie versucht, beim Lesen des Codes richtig zu versuchen
verstehen das Konzept, ich weiß nur, dass es scheint zu funktionieren!
Funktion PtInPoly (const Punkte: Array of TPoint; X, Y: Integer): Boolean;
var
Graf,
Ich,
J: Integer;
beginnen
Ergebnis: = False;
Count: = Length(Points);
J: = Count-1;
für I: = 0 bis Count-1 fangen
Wenn ((Punkte [I]. Y < = Y) und (Y < verweist [J]. (Y)) oder
((Punkte [J]. Y < = Y) und (Y < Punkte [I]. Y)) dann
beginnen
Wenn (X < (Punkte [j]. X - Punkte [i]. X) * (y - Punkte [i]. Y) /
(Punkte [j]. Y - Punkte [i]. Y) + Punkte [i]. X) dann
Ergebnis: = nicht Ergebnis;
Ende;
J: = I;
Ende;
Ende;
Punkt im Polygon?
Punkt im Polygon? : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Wie Sie überprüfen, ob der Punkt X, Y innerhalb eines Polygons befindet.
Punkt im polygon
Anscheinend geht diese Lösung überprüfen, wie viele Male Sie Kreuz
eine Linie vom Punkt X, Y, um den äußeren Rand des Bildschirms übergeben.
Ich habe ehrlich gesagt nie versucht, beim Lesen des Codes richtig zu versuchen
verstehen das Konzept, ich weiß nur, dass es scheint zu funktionieren!
Funktion PtInPoly (const Punkte: Array of TPoint; X, Y: Integer): Boolean;
var
Graf,
Ich,
J: Integer;
beginnen
Ergebnis: = False;
Count: = Length(Points);
J: = Count-1;
für I: = 0 bis Count-1 fangen
Wenn ((Punkte [I]. Y < = Y) und (Y < verweist [J]. (Y)) oder
((Punkte [J]. Y < = Y) und (Y < Punkte [I]. Y)) dann
beginnen
Wenn (X < (Punkte [j]. X - Punkte [i]. X) * (y - Punkte [i]. Y) /
(Punkte [j]. Y - Punkte [i]. Y) + Punkte [i]. X) dann
Ergebnis: = nicht Ergebnis;
Ende;
J: = I;
Ende;
Ende;