vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Liegt 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Objekt über Objekt1.276Creativ04.02.04 10:35
Re: Objekt über Objekt890skydeck04.02.04 11:13
Re: Objekt über Objekt922Creativ04.02.04 11:52
Re: Objekt über Objekt812skydeck04.02.04 11:59
Re: Objekt über Objekt873Creativ04.02.04 12:01
Re: Objekt über Objekt906Creativ04.02.04 12:12
Re: Objekt über Objekt846Creativ05.02.04 09:29
Re: Objekt über Objekt773skydeck05.02.04 12:30
Re: Objekt über Objekt853devnull05.02.04 12:39
Re: Objekt über Objekt913Creativ05.02.04 15:14
Re: Objekt über Objekt809devnull05.02.04 15:29
Re: Objekt über Objekt859Creativ05.02.04 16:20
Re: Objekt über Objekt928Creativ05.02.04 19:58
Liegt Punkt im Polygon?2.803skydeck06.02.04 09:59
Re: Objekt über Objekt905skydeck06.02.04 12:50

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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