DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Punkt in Polygon bzw. Polyeder

  • From: hanssen@XXXXXXX.de
  • Subject: Punkt in Polygon bzw. Polyeder
  • Date: 28 Dec 1998 08:36:09 +0100
  • To: dmug@XXXXXXX.ch
  • Alternate-recipient: Allowed
  • Conversion: Allowed
  • Disclose-recipients: Prohibited
  • Original-encoded-information-types: (1)(0)(10021)(7)(1)(0)(1), (1)(0)(10021)(7)(1)(0)(6), (1)(0)(10021)(7)(1)(0)(100)
  • X400-content-type: P2-1988 ( 22 )
  • X400-mts-identifier: [/c=DE/admd=dbp/prmd=zeiss/; 01D9A368734E9001-MTAczoMH1]
  • X400-originator: hanssen@zeiss.de
  • X400-received: by mta MTAczoMH1 in /c=DE/admd=dbp/prmd=zeiss/; Relayed; 28 Dec 1998 08:36:09 +0100
  • X400-received: by /c=DE/admd=dbp/prmd=zeiss/; Relayed; 28 Dec 1998 08:36:09 +0100
  • X400-recipients: non-disclosure;
Hallo, Innenpunkt-Sucher,

ich habe das zweidimensionale Problem einmal folgendermaßen gelöst:
{xm,ym} sei der fragliche Punkt. Betrachte Kanten des Polygons und berechne die 
Schnittpunkte {sx[i],sy[i]} mit der Geraden {x,ym} (x beliebig). Interessant sind
überhaupt nur solche Kanten, bei denen (y[i-1]<ym UND y[i]>=ym)  ODER 
(y[i-1]>=ym UND y[i]<ym) sind, also solche Kanten, die die Horizontale zwischen
ihren Eckpunkten schneiden oder wenigstens berühren.Weiter interessieren nur 
Schnittpunkte, bei denen sx[i]>xm ist. 

Die Eckpunkte seien mit {x[i],y[i]} bezeichnet. Zähle nun Plus 1, wenn 

sx[i]>xm UND y[i-1]<ym UND y[i]>=ym ist. 

Zähle Minus 1, wenn 

sx[i]>xm UND y[i-1]>=ym UND y[i]<ym ist. 

Analog muß man nun die Kante behandeln, die den letzten Polygonpunkt mit 
dem ersten verbindet. Der Zähler ist die Umlaufzahl des Polygonzugs um den 
Punkt {xm,ym}. Wenn sie größer als 0 ist, ist es ein Innenpunkt.

Dieser Algorithmus behandelt auch Polygone, die einen Punkt mehrfach 
einschließen. Mit minimaler Abwandlung geht er auch für mehrfach (orientiert)
berandete Gebiete.

Ob man Randpunkte als Innenpunkte behandelt, ist Definitionssache. Randpunktge
haben mindestens ein sx[i]==xm.

Wenn man für viele benachbarte Punkte auf einem Gitter die Relation 
Innen/Außenpunkt bestimmen soll, dann kann man sich die Arbeit dadurch
erleichtern, daß alle Punkte "in der gleichen Zeile" wie ein bereits untersuchter
Punkt bis zun nächsten Kantenschnittpunkt die gleiche Eigenschaft, wie der
untersuchte Punkt haben. 

Für das höherdimensionale Problem habe ich keine Lösung parat. Diese 
Gedanken sind von der Herleitung des komplex-eindimensionalen Residuen-
satzes inspiriert (daher kommt der Gedanke einer Umlaufzahl). Nun ist es sehr lange
her, daß ich mich mit komplexer Analysis (mehrerer Veränderlicher) beschäftigt habe.
Vielleicht findet man in dem Zusammenhang einen Startpunkt für Überlegungen
im höherdimensionalen Fall.

Viele Grüße

Dipl.-Math. Adalbert Hanßen.









> Liebe Kollegen/innen,
> 
> kennt jemand einen einfachen und moeglichst schnellen Weg, um in
> Mathematica festzustellen, ob ein zweidimensionaler Punkt innerhalb
> eines Polygons liegt, welches durch seine Eckpunkte definiert ist, bzw.
> ein Punkt im 3D-Raum  inerhalb eines Polyeders (ebenfalls durch die
> Eckpunkte definiert)?
> Mit freundlichen Gruessen,
> Frank Scherbaum


Abteilung/Department: Entwicklung Augenoptik
Ersteller/Author: Dipl.-Math. A. Hanßen
Telefon/Phone: 
Fax/Telefax: 


Verweise:
Punkt in Polygon, bzw. Polyeder
Frank Scherbaum, 22.12.1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:44