| |

Visual-Basic EinsteigerLiegt Punkt im Polygon? | |  | Autor: skydeck | Datum: 06.02.04 09:59 |
| Hallo,
was Du ansprichts ist das Problem, ob sich ein Punkt in einem Objekt befindet. Da es sich hier nicht um eine formelmässig-definierbare Figur (sondern ein Polygon) handelt, wird die Sache ein wenig komplizierter.
Am einfachsten wäre sicherlich mit mehreren select-case zu prüfen, ob ein Punkt in dem Rechteck ist (beim Rechteck ist das mit vertretbarem Aufwand zu lösen); oder nicht.
Ansonsten gibt es noch einen speziellen Algorithmus, mit dem das gecheckt werden kann. Diesen werde ich mal kurz skizzieren:
1) Du hast einen gegebenen Punkt (P) (z.B. einer der vier Eckpunkte eines Quadrats) und willst wissen, ob sich dieser in einem Polygon befindet, dass durch Knoten und kanten definiert ist.
2) Dann sucht man sich einen zweiten Punkt (Q) der definitiv ausserhalb des Polygons liegt (z.B. Ursprung der Form, oder wo anders).
3) Zwischen diese beiden Punkte legt man nun eine Strecke (Gerade mit Endpunkten).
4) Nun geht man alle Kanten, die das Polygon hat durch und guckt, ob die Kante einen Schnittpunkt mit der Strecke PQ hat. Ist dies der Fall, wird der Schnittpunktezähler erhöht. (Also: man zählt die Schnittpunkte, die das Polygon mit der Geraden hat.)
5) Nun kommt eine Fallunterscheidung:
Ist die Anzahl der Schnittpunkte gerade (also z.B. 2,4,6 10, 2000) liegt der Punkt ausserhalb des Polygons.
Ist aber die Anzahl der Schnittpunkte ungerade (z.B. 1, 3, 5) liegt der Punkt innerhalb des Polygons.
Mach Dir dazu am besten mal auf Papier ein paar Skizzen mit verschiedenen Polygonen (Stern, L-förmig, n-eck etc.) dann wird das Prinzip schnell deutlich.
Es gibt aber noch eine ganz andere Lösung:
Man färbt das Polygon mit der entsprechenden API-Funktion ein (z.B. mit ROT) und guckt nach, welche Farbe der Punkt (P) hat. Hat er auch die Farbe ROT, liegt er im Polygon.
Viel Erfolg bei Deiner Projektwoche.
Gruss |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|