Diskussion:Punkt-in-Polygon-Test nach Jordan
falsch?
BearbeitenIst die Anzahl gerade, liegt der Punkt innerhalb des Polygons, ist sie ungerade, liegt er außerhalb. stimmt das? --El. 14:38, 31. Aug. 2010 (CEST)
- Ups, natürlich genau andersrum -- Meror 15:16, 2. Sep. 2010 (CEST)
Kanonen auf Spatzen
BearbeitenEhrlich gesagt ist der Jordansche Kurvensatz eine ziemlich dicke Kanone, wenn man nur den den Spezialfall des Polygons braucht.--Hagman 22:48, 16. Feb. 2011 (CET)
- Wie darf ich das auffassen? :) Bin gerne zu Anregungen bereit -- Meror (13:18, 17. Feb. 2011 (CET), Datum/Uhrzeit nachträglich eingefügt, siehe Hilfe:Signatur)
- Der Beweis des Jordanschen Kurvensatzes im allgemeinen Fall einer einfach geschlossenen stetigen ebenen Kurve ist alles andere als trivial.
Obendrein bezweifle ich jetzt im Moment mal, dass es im allgemeinen Fall immer eine Richtung gibt, in der nur endlich viele Randschnitte existieren.Stimmt wohl doch, glaubich Der Beweis derselben Aussagen für einfach geschlossene Polygonzüge ist hingegen eher anspruchslos (obwohl auch da nicht so trivial, wie Jordan selbst wohl glaubte, vgl. http://compgeom.cs.uiuc.edu/~jeffe/teaching/comptop/notes/jordan-polygon-theorem.pdf ).--Hagman 19:51, 17. Feb. 2011 (CET)
- Der Beweis des Jordanschen Kurvensatzes im allgemeinen Fall einer einfach geschlossenen stetigen ebenen Kurve ist alles andere als trivial.
Es gibt verständlichere Algorithmen
Bearbeitenint pnpoly(int npol, float *xp, float *yp, float x, float y){
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++) {
if (((yp[i]<=y && y<yp[j]) || (yp[j]<=y && y<yp[i])) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
Die Funktion gibt 1 zurück, falls der Punkt innen liegt, 0 falls er außen liegt und 0 oder 1 falls er auf dem Rand liegt. Quelle: comp.graphics.algorithms (Frage 2.03)
Als Beispiel scheint mir das wesentlich verständlicher zu sein als der aktuelle Pseudocode.--G8w (Diskussion) 10:23, 19. Jun. 2015 (CEST)
- Über Übersichtlichkeit kann man streiten. Fakt ist aber, dass dies hier im Gegensatz zu dem Implementierungsbeispiel im Artikel funktioniert. Hat den C#-Code mal jemand ausprobiert? Da kommt "irgendwas" raus, nur nicht, ob der Punkt im Polygon liegt. --77.21.132.247 15:09, 12. Mär. 2022 (CET)
- Der Code im Beispiel auf der Seite funktioniert wirklich nicht.
- Das o.g. Codebeispiel ist aber leider auch nicht ohne Probleme allgemein anwendbar: Wenn yp[j]==yp[i] erhält man eine unschöne Nulldivision. --46.114.39.71 13:37, 17. Apr. 2022 (CEST)
- die division nach links auf x multiplizieren! Aber dann geht es trotzdem nicht, die y werte müssen nach Größe sortiert sein, dann geht es. --91.4.59.97 18:30, 11. Jul. 2024 (CEST)
Null ist auch eine gerade Zahl
BearbeitenBei "Strahl-Methode" wird "kein Schnittpunkt" als eigenständiger Fall behandelt. Das ist unnötig kompliziert, da 0 eine gerade Zahl ist. (nicht signierter Beitrag von 92.201.56.55 (Diskussion) 10:39, 15. Aug. 2019 (CEST))
- Dem schließe ich mich an. Das wollte ich auch gerade schreiben! --2001:4090:A240:81E5:D250:99FF:FEA5:1047 11:21, 6. Okt. 2024 (CEST)