Wrong language? Choose different language instead:

close

punkt im polygon wie ?

punkt im polygon wie ?
verfasst am 15.03.2012 12:41:46
hallo leute,

gibt es eine funktion wie in normal java um einen punkt im polygon zu ermitteln ?
ansonsten für einen funktionierenden algorithmus der flott ist, wäre ich dankbar.

bei java gibts ja
Polygon contains(int x, int y);

aber awt gibts ja auf android nicht.
und der algo, den ich gefunden habe, der kommt bei ecken nicht klar.
public boolean contains(int x, int y) {
boolean oddTransitions = false;
for (int i = 0, j = polySides - 1; i < polySides; j = i++) {
if ((polyY[i] < y && polyY[j] >= y)
|| (polyY[j] < y && polyY[i] >= y)) {
if (polyX[i] + (y - polyY[i]) / (polyY[j] - polyY[i])
* (polyX[j] - polyX[i]) < x) {
oddTransitions = !oddTransitions;
}
}
}
return oddTransitions;
}
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: punkt im polygon wie ?
verfasst am 15.03.2012 13:29:10
wie exakt soll das denn sein?

Es gibt mehrere Methoden das mathematisch zu ermitteln - dazu müsstest du aber wissen welche seite der linie innerhalb und welche außerhalb des polygons ist, in der Regel machtman das über ne art "culling" - du kannst dann relativ einfach herausfinden auf welcher Seite der Linie ein Punkt ist, und wenn er für alle Linien des Polygons "innen" ist, dann hast du die Position. Gibt's jetzt mehrere mathematische Möglichkeiten, die ich nicht im Kopf habe, wenn du mit Vektoren rechnest kannst du über das Scalarprodukt herausfinden auf welcher Seite der eine Vektor von dem anderen ist - hab's jetzt aber nicht im Kopf, ist nur ne Anregung. Mit einem Punkt und einer Linie hast du ja 2 Vektoren.

Ich bin mir aber sicher, es gibt bereits irgendeine eingebaute Funktionalität in irgend einer lib :-)

-----
Worm Puncher | Sholik | Robo Miner | Minesweeper: Unlimited!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: punkt im polygon wie ?
verfasst am 15.03.2012 14:01:02
naja eben keine verschnörkelungen.
so nen art stopschild sozusagen.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: punkt im polygon wie ?
verfasst am 15.03.2012 14:25:54 — geändert am 15.03.2012 14:27:13
denk dir einen kreis drum herum und prüfe ob der abstand zum mittelpunkt kleiner ist als der halbe radius ..

da macht es wirklich keinen sinn polygongenau zu überprüfen :-)

edit: achso, das geht am schnellsten mit ein bisschen vektoralgebra, einfach mal nach "vektor länge ermitteln" suchen, falls du keine vektorenklassen hast - ist nicht so komplex

-----
Worm Puncher | Sholik | Robo Miner | Minesweeper: Unlimited!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: punkt im polygon wie ?
verfasst am 15.03.2012 15:39:06
jetzt wo dus sagst. hätt ich ja fast schon selbst drauf kommen können.

wollte erst schneiden von gerade berechnen.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: punkt im polygon wie ?
verfasst am 15.03.2012 19:01:23
hab bei google was brauchbares gefunden, scheint auch zu funtionieren.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)