<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Re: Punkt-in-Polygon-Test nach JORDAN" in Programmierung</title>
    <link>https://community.graphisoft.com/t5/Programmierung/Punkt-in-Polygon-Test-nach-JORDAN/m-p/561789#M7111</link>
    <description>hätte ich schon öfter brauchen können - ist die Frage, wie "performat" es ist, wenn man viele Punkte nachprüft.&lt;BR /&gt;&lt;BR /&gt;ähnliche Funktionen habe ich selber "zusammengeschustert", als ich mit einem Fliesen-GDL vor ca.10 Jahren mal  "an seine Grenzen" gescriptet hatte.&lt;BR /&gt;&lt;BR /&gt;War damals so gedacht: &lt;BR /&gt;&lt;IFRAME frameborder="0" width="425" height="355" src="https://www.youtube.com/embed/n1MPKb2YTMs" allowfullscreen=""&gt;&lt;/IFRAME&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://www.youtube.com/watch?v=n1MPKb2YTMs" target="_blank"&gt;https://www.youtube.com/watch?v=n1MPKb2YTMs&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Muss mich mal wieder reintiegern, ob Dein Script hier was bringen würde.&lt;BR /&gt;&lt;BR /&gt;Ich den denke an Fliesen zählen im Polygon..</description>
    <pubDate>Thu, 08 Jun 2023 10:33:40 GMT</pubDate>
    <dc:creator>Hmooslechner</dc:creator>
    <dc:date>2023-06-08T10:33:40Z</dc:date>
    <item>
      <title>Punkt-in-Polygon-Test nach JORDAN</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Punkt-in-Polygon-Test-nach-JORDAN/m-p/561788#M7110</link>
      <description>Howdy, wer's mal braucht. &lt;BR /&gt;Routine prüft, ob sich ein Pkt. in einem beliebigen Polygon befindet. &lt;BR /&gt;Für Testzwecke hat der folgende Polygon 6 Eckpunkte. &lt;BR /&gt;Einfach die dyn HoSpos (befinden sich zu Beginn im Objektursprung) aufziehen!&lt;BR /&gt;Gruß&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!!!anzulegende PARAMETER: &lt;BR /&gt;"PktTestX"    vom Typ LÄNGE&lt;BR /&gt;"PktTestY"    vom Typ LÄNGE&lt;BR /&gt;"PktAnz"       vom Typ GANZZAHL, Startwert = 6&lt;BR /&gt;"PktX"           1-dimensionales ARRAY, [7], vom Typ LÄNGE &lt;BR /&gt;"PktY"           1-dimensionales ARRAY, [7], vom Typ LÄNGE &lt;BR /&gt;&lt;BR /&gt;!!! 2-D-SCRIPT:&lt;BR /&gt;!!!!!! &lt;!-- m --&gt;&lt;A class="postlink" href="https://de.wikipedia.org/wiki/Punkt-in-Polygon-Test_nach_Jordan"&gt;https://de.wikipedia.org/wiki/Punkt-in- ... ach_Jordan&lt;/A&gt;&lt;!-- m --&gt; !!!!!!&lt;BR /&gt;&lt;BR /&gt;EPS  = 0.0001&lt;BR /&gt;unID = 1&lt;BR /&gt;HOTSPOT2 0 , 0 , unID : unID=unID+1 !Fangpunkt am Objekteinsetzpunkt&lt;BR /&gt;CIRCLE2  0 , 0 , 0.025&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Position des Testpunktes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;!!! Vertikale Richtung&lt;BR /&gt;HOTSPOT2 pktTestX,0,unID,pktTestY,1+128 : unID=unID+1 !Basisfangpunkt&lt;BR /&gt;HOTSPOT2 pktTestX,pktTestY,unID,pktTestY,2 : unID=unID+1 !beweglicher Fangpunkt&lt;BR /&gt;HOTSPOT2 pktTestX,-1,unID,pktTestY,3 : unID=unID+1 !Referenzrichtung&lt;BR /&gt;!!! Horizontale Richtung&lt;BR /&gt;HOTSPOT2 0,pktTestY,unID,pktTestX,1+128  : unID=unID+1 !Basisfangpunkt&lt;BR /&gt;HOTSPOT2 pktTestX,pktTestY,unID,pktTestX	,2: unID=unID+1 !beweglicher Fangpunkt&lt;BR /&gt;HOTSPOT2 -1,pktTestY,unID,pktTestX,3 : unID=unID+1 !Referenzrichtung&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Eckpunkte des Polygons !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;FOR i = 1 TO PktAnz&lt;BR /&gt;	!!! Vertikale Richtung&lt;BR /&gt;	HOTSPOT2 PktX&lt;I&gt; ,0 ,unID,PktY&lt;I&gt;	,1+128  : unID=unID+1 !Basisfangpunkt&lt;BR /&gt;	HOTSPOT2 PktX&lt;I&gt;,PktY&lt;I&gt;,unID,PktY&lt;I&gt;,2, PktY&lt;I&gt;,"Y Pkt.Nr: " + STR(i,1,0): unID=unID+1 !beweglicher Fangpunkt&lt;BR /&gt;	HOTSPOT2 PktX&lt;I&gt;,-1,unID,PktY&lt;I&gt;,3 : unID=unID+1 !Referenzrichtung&lt;BR /&gt;	!!! Horizontale Richtung&lt;BR /&gt;	HOTSPOT2 0,PktY&lt;I&gt;,unID,PktX&lt;I&gt;,1+128  : unID=unID+1 !Basisfangpunkt&lt;BR /&gt;	HOTSPOT2 PktX&lt;I&gt;,PktY&lt;I&gt;,unID,PktX&lt;I&gt;,2, PktX&lt;I&gt;,"X Pkt.Nr: " + STR(i,1,0) : unID=unID+1 !beweglicher Fangpunkt&lt;BR /&gt;	HOTSPOT2 -1,PktY&lt;I&gt;,unID,PktX&lt;I&gt;,3 : unID=unID+1 !Referenzrichtung&lt;BR /&gt;&lt;BR /&gt;	!TEXT2 pktX&lt;I&gt;, pktY&lt;I&gt;, STR(i,1,0) + " (" + STR(pktX&lt;I&gt;,3,2) + "|" + STR(pktY&lt;I&gt;,3,2) + ")" &lt;BR /&gt;	TEXT2 pktX&lt;I&gt;, pktY&lt;I&gt;, STR(i,1,0) &lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Außenkonturen des Polygons !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;PktX[PktAnz+1] 	= PktX[1]&lt;BR /&gt;PktY[PktAnz+1] 	= PktY[1]&lt;BR /&gt;&lt;BR /&gt;FOR i = 1 TO PktAnz&lt;BR /&gt;	LINE2 PktX&lt;I&gt;,PktY&lt;I&gt;, PktX[i+1],PktY[i+1]&lt;BR /&gt;	HOTLINE2 PktX&lt;I&gt;,PktY&lt;I&gt;, PktX[i+1],PktY[i+1]&lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;CIRCLE2	pktTestX, pktTestY, 0.1	!!!! Das ist der Punkt der getestet werden soll, ob er im Dreieck liegt&lt;BR /&gt;HOTARC2 pktTestX, pktTestY, 0.1	,0,360, unID : unID=unID+1&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!! Punkt-in-Polygon-Test nach JORDAN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;!!!!!!!! &lt;!-- m --&gt;&lt;A class="postlink" href="https://de.wikipedia.org/wiki/Punkt-in-Polygon-Test_nach_Jordan"&gt;https://de.wikipedia.org/wiki/Punkt-in- ... ach_Jordan&lt;/A&gt;&lt;!-- m --&gt; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;&lt;BR /&gt;ergKPT = 0	!!! INITIALISIERUNG - Ergebnis des KreuzProdukt-Testes&lt;BR /&gt;&lt;BR /&gt;!!!Funktion:  PunktInPolygon&lt;BR /&gt;!!!Parameter: Ecken P[1], ...,P[n] eines ebenen Polygons P, Testpunkt Q&lt;BR /&gt;!!!Rückgabe:  +1, wenn Q innerhalb P liegt;&lt;BR /&gt;!!!           −1, wenn Q außerhalb P liegt;&lt;BR /&gt;!!!            0, wenn Q auf P liegt&lt;BR /&gt;&lt;BR /&gt;!!! Zur Sicherheit nochmal, falls o.g. AußenKontur nicht existiert !!!&lt;BR /&gt;PktX[PktAnz+1] 	= PktX[1]&lt;BR /&gt;PktY[PktAnz+1] 	= PktY[1]&lt;BR /&gt;toggleBinDrinJN	= -1&lt;BR /&gt;&lt;BR /&gt;FOR i = 1 TO PktAnz - 0&lt;BR /&gt;	checker = 0 &lt;BR /&gt;&lt;BR /&gt;	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;	!!!!! KreuzProduktTest - BEGINN !!!!!&lt;BR /&gt;	!!!Funktion:  KreuzProdTest&lt;BR /&gt;	!!!Parameter:	Punkte &lt;BR /&gt;	!!!			A = (pktTestX,pktTestY), &lt;BR /&gt;	!!!			B = (PktX&lt;I&gt;,PktY&lt;I&gt;), &lt;BR /&gt;	!!!			C = (PktX[i+1],PktY[i+1])&lt;BR /&gt;	!!!Rückgabe:  −1, wenn der Strahl von A nach rechts die Kante [BC] schneidet &lt;BR /&gt;        !!!(außer im unteren Endpunkt);&lt;BR /&gt;	!!!            0, wenn A auf [BC] liegt;&lt;BR /&gt;	!!!           +1, ansonsten &lt;BR /&gt;&lt;BR /&gt;	IF ABS(pktTestY - PktY&lt;I&gt;) &amp;lt; EPS   AND   ABS(PktY&lt;I&gt; &amp;lt; PktY[i+1]) &amp;lt; EPS THEN &lt;BR /&gt;		IF ( PktX&lt;I&gt; &amp;lt;= pktTestX   AND   pktTestX &amp;lt;= PktX[i+1] )    OR    ( PktX[i+1] &amp;lt;= pktTestX   AND   pktTestX &amp;lt;= PktX&lt;I&gt;) THEN &lt;BR /&gt;			ergKPT = 0&lt;BR /&gt;		ELSE&lt;BR /&gt;			ergKPT = 1&lt;BR /&gt;		ENDIF&lt;BR /&gt;	ENDIF&lt;BR /&gt;	&lt;BR /&gt;	IF ABS(pktTestY - PktY&lt;I&gt;) &amp;lt; EPS   AND   ABS(pktTestX - PktX&lt;I&gt;) &amp;lt; EPS THEN&lt;BR /&gt;		ergKPT = 0&lt;BR /&gt;	ENDIF&lt;BR /&gt;	&lt;BR /&gt;	IF PktY&lt;I&gt; &amp;gt; PktY[i+1] THEN&lt;BR /&gt;		checker = 1&lt;BR /&gt;		tempX = PktX&lt;I&gt; &lt;BR /&gt;		tempY = PktY&lt;I&gt; &lt;BR /&gt;		PktX&lt;I&gt; = PktX[i+1] &lt;BR /&gt;		PktY&lt;I&gt; = PktY[i+1] &lt;BR /&gt;		PktX[i+1] = tempX &lt;BR /&gt;		PktY[i+1] = tempY&lt;BR /&gt;	ENDIF&lt;BR /&gt;	&lt;BR /&gt;	IF (pktTestY &amp;lt;= PktY&lt;I&gt;) OR (pktTestY &amp;gt; PktY[i+1]) THEN&lt;BR /&gt;		ergKPT = 1&lt;BR /&gt;	ENDIF&lt;BR /&gt;	&lt;BR /&gt;	delta2 = (PktX&lt;I&gt; - pktTestX) * (PktY[i+1] - pktTestY) - (PktY&lt;I&gt; - pktTestY) * (PktX[i+1] - pktTestX)&lt;BR /&gt;	&lt;BR /&gt;	IF delta2 &amp;gt; EPS THEN&lt;BR /&gt;		!!! zus. folg. Prüfung v. SCHT ergänzt, dann funzt es !!!&lt;BR /&gt;		IF pktTestY &amp;gt; PktY&lt;I&gt; AND pktTestY &amp;lt; PktY[i+1] THEN&lt;BR /&gt;			ergKPT = -1&lt;BR /&gt;		ENDIF&lt;BR /&gt;	ELSE&lt;BR /&gt;		IF delta2 &amp;lt; 0 THEN&lt;BR /&gt;			ergKPT = 1&lt;BR /&gt;		ELSE&lt;BR /&gt;			ergKPT = 0&lt;BR /&gt;		ENDIF&lt;BR /&gt;	ENDIF&lt;BR /&gt;&lt;BR /&gt;	!!!!! Zurück holen der ursprünglichen Werte f. d. nächsten Schleifendurchlauf !!!!!&lt;BR /&gt;	IF checker = 1 THEN&lt;BR /&gt;		tempX = PktX&lt;I&gt; &lt;BR /&gt;		tempY = PktY&lt;I&gt; &lt;BR /&gt;		PktX&lt;I&gt; = PktX[i+1] &lt;BR /&gt;		PktY&lt;I&gt; = PktY[i+1] &lt;BR /&gt;		PktX[i+1] = tempX &lt;BR /&gt;		PktY[i+1] = tempY&lt;BR /&gt;	ENDIF&lt;BR /&gt;	&lt;BR /&gt;	!TEXT2 -1 + 0.75 * i , 2.00 , STR(ergKPT,1,0)&lt;BR /&gt;	!!!!! KreuzProduktTest - ENDE !!!!!&lt;BR /&gt;	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;&lt;BR /&gt;	toggleBinDrinJN = toggleBinDrinJN * ergKPT &lt;BR /&gt;&lt;BR /&gt;	!TEXT2 -1 + 0.75 * i , 2.50 , "t:" + STR(toggleBinDrinJN , 1 , 0) &lt;BR /&gt;&lt;BR /&gt;NEXT i &lt;BR /&gt;&lt;BR /&gt;xxx= 1&lt;BR /&gt;yyy= 2&lt;BR /&gt;IF toggleBinDrinJN &amp;lt; 0 THEN	TEXT2 xxx , yyy , "Bin doch kein Hund! Will nicht draußen bleiben! &lt;!-- s:-( --&gt;&lt;span class="lia-unicode-emoji" title=":enttäuschtes_Gesicht:"&gt;😞&lt;/span&gt;&lt;!-- s:-( --&gt;"&lt;BR /&gt;IF toggleBinDrinJN = 0 THEN	TEXT2 xxx , yyy , "Bin gut drauf &lt;!-- s:-) --&gt;&lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;!-- s:-) --&gt;"&lt;BR /&gt;IF toggleBinDrinJN &amp;gt; 0 THEN	TEXT2 xxx , yyy , "Ich bin drin! &lt;!-- s:-) --&gt;&lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;!-- s:-) --&gt;)"&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;END:::::::::::::::::::::::::::::::&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;</description>
      <pubDate>Thu, 08 Jun 2023 08:03:07 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Punkt-in-Polygon-Test-nach-JORDAN/m-p/561788#M7110</guid>
      <dc:creator>Ma_Scht</dc:creator>
      <dc:date>2023-06-08T08:03:07Z</dc:date>
    </item>
    <item>
      <title>Re: Punkt-in-Polygon-Test nach JORDAN</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Punkt-in-Polygon-Test-nach-JORDAN/m-p/561789#M7111</link>
      <description>hätte ich schon öfter brauchen können - ist die Frage, wie "performat" es ist, wenn man viele Punkte nachprüft.&lt;BR /&gt;&lt;BR /&gt;ähnliche Funktionen habe ich selber "zusammengeschustert", als ich mit einem Fliesen-GDL vor ca.10 Jahren mal  "an seine Grenzen" gescriptet hatte.&lt;BR /&gt;&lt;BR /&gt;War damals so gedacht: &lt;BR /&gt;&lt;IFRAME frameborder="0" width="425" height="355" src="https://www.youtube.com/embed/n1MPKb2YTMs" allowfullscreen=""&gt;&lt;/IFRAME&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://www.youtube.com/watch?v=n1MPKb2YTMs" target="_blank"&gt;https://www.youtube.com/watch?v=n1MPKb2YTMs&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Muss mich mal wieder reintiegern, ob Dein Script hier was bringen würde.&lt;BR /&gt;&lt;BR /&gt;Ich den denke an Fliesen zählen im Polygon..</description>
      <pubDate>Thu, 08 Jun 2023 10:33:40 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Punkt-in-Polygon-Test-nach-JORDAN/m-p/561789#M7111</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2023-06-08T10:33:40Z</dc:date>
    </item>
  </channel>
</rss>

