<?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: Schwerpunkt eines Polygones berechnen" in Programmierung</title>
    <link>https://community.graphisoft.com/t5/Programmierung/Schwerpunkt-eines-Polygones-berechnen/m-p/534633#M5670</link>
    <description>Hi, habe mich gerade mal "ein Bisschen" damit beschäftigt. &lt;BR /&gt;Wer's mal braucht, bitte sehr, auf eigene Gefahr, (at own risk).&lt;BR /&gt;Der Ansatz ist: PGon in Dreiecke zerlegen. SPs der Dreiecke ermitteln, Flächen der Dreiecke ermitteln unter Nutzung der Flächenvorzeichen (Das ist der Trick &lt;!-- s:-) --&gt;&lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;!-- s:-) --&gt;), ermitteln ob Dreieck in anderem, benacchbartem Dreieck enthalten ist und somit NICHT zu berücksichtigen ist,&lt;BR /&gt;Gesamt-SP ermittel. &amp;lt;120 Zeilen Programmcode - finde ich vertretbar.&lt;BR /&gt;&lt;BR /&gt;Habe noch keinen PGon gefunden wo es NICHT funktioniert, solange sich die Konturen NICHT schneiden und das Parameter-Script ausgeführt wird.&lt;BR /&gt;auf 120g-Papier ausdrucken, ausschneiden, auf den Tikki legen, grinsen !!!&lt;BR /&gt;&lt;BR /&gt;Wenn sich bitte wer findet - ich denke da an einen ganz Speziellen - der die DynHoSpo-Einfüge-Option reinbasteln könnten! &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;Gruß&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;! PARAMETER &lt;BR /&gt;!!! PktAnz (Ganzzahl)&lt;BR /&gt;!!! PktX (Länge) (Als eindimensionales ARRAY)&lt;BR /&gt;!!! PktY (Länge) (Als eindimensionales ARRAY)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!PARAMETER-SCHRIPT&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!! Sorge tragen, dass wenn die Punktanzahl erhöht wird, die Neuen Punkte beim letzten eingefügt werden !!!!!! &lt;BR /&gt;FOR i = PktAnz+1 TO 50&lt;BR /&gt;PARAMETERS	PktX&lt;I&gt; = PktX[PktAnz],&lt;BR /&gt;			PktY&lt;I&gt; = PktY[PktAnz]&lt;BR /&gt;NEXT i&lt;BR /&gt;IF PktAnz &amp;gt; 50 THEN PARAMETERS PktAnz = 50&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!2D-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;!-- m --&gt;&lt;A class="postlink" href="http://media2mult.uni-osnabrueck.de/pmwiki/fields/cg/index.php?n=Main.Polygon"&gt;http://media2mult.uni-osnabrueck.de/pmw ... in.Polygon&lt;/A&gt;&lt;!-- m --&gt;&lt;BR /&gt;!!!!!! &lt;!-- m --&gt;&lt;A class="postlink" href="https://www.inf.hs-flensburg.de/lang/algorithmen/geo/polygon.htm"&gt;https://www.inf.hs-flensburg.de/lang/al ... olygon.htm&lt;/A&gt;&lt;!-- m --&gt;&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!! copyright Ma_Scht, Jun. 2020 !!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!! For free use, but at one's own risk. !!!!!!!!&lt;BR /&gt;!!!!! Zur freien Verwendung, auf eigenes Risiko !!!!!!&lt;BR /&gt;!! Solidarität mit Armen - Spendet mal für was Anderes als den Fussballverein Eurer Kinder !!&lt;BR /&gt;!! und auch mal mehr als 5€ !!&lt;BR /&gt;!! Eine Grauer Star OP kostet in Afrika 30 € - und ein Kind kann wieder sehen !!&lt;BR /&gt;!! Christliche BLindenmission z.B. !!&lt;BR /&gt;!! Bitte nachdenken bevor das Pulver in die nächste Schw...protese gesteckt wird !!&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;EPS = -0.00001&lt;BR /&gt;unID =1&lt;BR /&gt;lll= 0.05		!!!! Länge von Hilsmarkierungen, etc. &lt;BR /&gt;hlp = 0 &lt;BR /&gt;umfang = 0&lt;BR /&gt;summeSPxMalA = 0 &lt;BR /&gt;summeSPyMalA = 0 &lt;BR /&gt;summeFlaechen = 0 &lt;BR /&gt;DIM seitenlaengeA[],&lt;BR /&gt;	seitenlaengeB[],&lt;BR /&gt;	seitenlaengeC[],&lt;BR /&gt;	sss[],&lt;BR /&gt;	flaeche[],&lt;BR /&gt;	seitenhalbierendeX[],&lt;BR /&gt;	seitenhalbierendeY[],&lt;BR /&gt;	schwerPktX[],&lt;BR /&gt;	schwerPktY[],&lt;BR /&gt;	steuerVZ[], &lt;BR /&gt; 	flaecheAufNULLsetzenJN[]&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;	NEXT i&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Außenkonturen des Polygons !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;FOR i = 1 TO PktAnz-1&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], 		 unID : unID=unID+1 &lt;BR /&gt;	umfang = umfang + SQR( (PktX[i+1] - PktX&lt;I&gt;)^2 + (PktY[i+1] - PktY&lt;I&gt;)^2 )&lt;BR /&gt;NEXT i&lt;BR /&gt;	LINE2 PktX[PktAnz],PktY[PktAnz], PktX[1],PktY[1]&lt;BR /&gt;	HOTLINE2 PktX[PktAnz],PktY[PktAnz], PktX[1],PktY[1], unID : unID=unID+1 &lt;BR /&gt;	umfang = umfang + SQR( (PktX[PktAnz] - PktX[1])^2 + (PktY[PktAnz] - PktY[1])^2 )&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! 1. und Letzter Punkt, GRAFISCHE Hervorhebung !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;LINE2 PktX[1]-lll,PktY[1]-lll, PktX[1]+lll,PktY[1]+lll&lt;BR /&gt;LINE2 PktX[1]-lll,PktY[1]+lll, PktX[1]+lll,PktY[1]-lll&lt;BR /&gt;CIRCLE2 PktX[PktAnz],PktY[PktAnz], lll	!!!! Letzter Pkt. &lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Ergänzungskanten der gebildeten Einzeldreiecke !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 3 TO PktAnz-1&lt;BR /&gt;	hlp = hlp + 1&lt;BR /&gt;!	LINE2 PktX[1],PktY[1], PktX&lt;I&gt;,PktY&lt;I&gt;&lt;BR /&gt;NEXT i &lt;BR /&gt;anzahlZwischenlinien = hlp&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Schwerpunkte der Einzelfläche berechnen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 2 TO PktAnz-1 &lt;BR /&gt;	pkt0X = pktX[3]&lt;BR /&gt;	pkt0Y = pktY[3]&lt;BR /&gt;	seitenhalbierendeX&lt;I&gt; = PktX[1] + 0.5 * ( PktX[i+1] - PktX[1] )&lt;BR /&gt;	seitenhalbierendeY&lt;I&gt; = PktY[1] + 0.5 * ( PktY[i+1] - PktY[1] )&lt;BR /&gt;!!!	CIRCLE2 seitenhalbierendeX&lt;I&gt;,	seitenhalbierendeY&lt;I&gt;, 0.05&lt;BR /&gt;!!!	LINE2 PktX&lt;I&gt;, PktY&lt;I&gt;,   seitenhalbierendeX&lt;I&gt;,	seitenhalbierendeY&lt;I&gt;&lt;BR /&gt;	schwerPktX&lt;I&gt; = PktX&lt;I&gt; + 2/3 * ( seitenhalbierendeX&lt;I&gt; - PktX&lt;I&gt; )&lt;BR /&gt;	schwerPktY&lt;I&gt; = PktY&lt;I&gt; + 2/3 * ( seitenhalbierendeY&lt;I&gt; - PktY&lt;I&gt; )&lt;BR /&gt;!	CIRCLE2  schwerPktX&lt;I&gt;, schwerPktY&lt;I&gt;, lll&lt;BR /&gt;!	HOTSPOT2 schwerPktX&lt;I&gt;, schwerPktY&lt;I&gt;, unID 		: unID=unID+1 &lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Berechnung des Flächeninhaltes gem &lt;!-- m --&gt;&lt;A class="postlink" href="https://www.inf.hs-flensburg.de/lang/algorithmen/geo/polygon.htm"&gt;https://www.inf.hs-flensburg.de/lang/al ... olygon.htm&lt;/A&gt;&lt;!-- m --&gt; !!&lt;BR /&gt;!!!!!!!!!!! Fläche ist POSITIV wenn P-Gon im UZS gezeichnet, oder NEGATIV wenn P-Gon GEGEN den UZS gezeichnet !!!!&lt;BR /&gt;!!!!!!!!!!! VORWÄRTS-BERECHNUNG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 1 TO PktAnz-2 &lt;BR /&gt;	flaeche&lt;I&gt; = 0.5 * ((PktX[i+1]-PktX[1]) * (PktY[i+2]-PktY[1]) - (PktX[i+2]-PktX[1]) * (PktY[i+1]-PktY[1]))&lt;BR /&gt;!	TEXT2 schwerPktX[i+1],schwerPktY[i+1], "A" + STR(i,1,0) + ": " + STR(flaeche&lt;I&gt;,3,2) + "m2"&lt;BR /&gt;	IF flaeche&lt;I&gt; &amp;lt; 0 THEN !!!! Steuer-VZ für die anschließende Prüfung&lt;BR /&gt;		steuerVZ&lt;I&gt; = -1&lt;BR /&gt;	ELSE &lt;BR /&gt;		steuerVZ&lt;I&gt; =  1&lt;BR /&gt;	ENDIF&lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!! PFÜRUNG ob Test-Punkt im DIRENKTEN FOLGE-Dreieck ist oder NICHT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;!!!!!!!!!!!!! VORWÄRTS-BERECHNUNG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 3 TO PktAnz-2 &lt;BR /&gt;	pkt1X	 = PktX[i-1]&lt;BR /&gt;	pkt1Y	 = PktY[i-1]&lt;BR /&gt;	pkt2X	 = PktX[i-2]&lt;BR /&gt;	pkt2Y 	 = PktY[i-2]&lt;BR /&gt;	pkt3X	 = PktX[1]&lt;BR /&gt;	pkt3Y	 = PktY[1]&lt;BR /&gt;	pkt0X 	 = pkt3X	!!! Pkt NULL ist erf., da Anfang und Ende geschlossen sein müssen&lt;BR /&gt;	pkt0Y 	 = pkt3Y&lt;BR /&gt;&lt;BR /&gt;	pktTestX = PktX&lt;I&gt;	!!! Testet ob Pkt. Nr. 4 beispielsweise in Fläche Nr. 4 enthalten ist (Folgenfläche)&lt;BR /&gt;	pktTestY = PktY&lt;I&gt;	!!! Gleicher Test muss noch mit der VORGÄNGERfläche gemacht werden&lt;BR /&gt;&lt;BR /&gt;	pktAX 	 = pktTestX&lt;BR /&gt;	pktAY 	 = pktTestY&lt;BR /&gt;	&lt;BR /&gt;	!!!! ERSTE VERGLEICHSRUNDE&lt;BR /&gt;	pktBX = pkt0X&lt;BR /&gt;	pktBY = pkt0Y&lt;BR /&gt;	pktCX = pkt1X&lt;BR /&gt;	pktCY = pkt1Y&lt;BR /&gt;	delta1 = steuerVZ&lt;I&gt; * ( (pktBX - pktAX) * (pktCY - pktAY) - (pktBY - pktAY) * (pktCX - pktAX) )&lt;BR /&gt;!	TEXT2 pktTestX,pktTestY-0.200, "delta 1: " + STR(delta1,4,3)&lt;BR /&gt;	&lt;BR /&gt;	!!!! ZWEITE VERGLEICHSRUNDE&lt;BR /&gt;	pktBX = pkt1X&lt;BR /&gt;	pktBY = pkt1Y&lt;BR /&gt;	pktCX = pkt2X&lt;BR /&gt;	pktCY = pkt2Y&lt;BR /&gt;	delta2 = steuerVZ&lt;I&gt; * ( (pktBX - pktAX) * (pktCY - pktAY) - (pktBY - pktAY) * (pktCX - pktAX) )&lt;BR /&gt;!	TEXT2 pktTestX,pktTestY-0.400, "delta 2: " + STR(delta2,4,3)&lt;BR /&gt;	&lt;BR /&gt;	!!!! DRITTE VERGLEICHSRUNDE&lt;BR /&gt;	pktBX = pkt2X&lt;BR /&gt;	pktBY = pkt2Y&lt;BR /&gt;	pktCX = pkt3X&lt;BR /&gt;	pktCY = pkt3Y&lt;BR /&gt;	delta3 = steuerVZ&lt;I&gt; * ( (pktBX - pktAX) * (pktCY - pktAY) - (pktBY - pktAY) * (pktCX - pktAX) )&lt;BR /&gt;!	TEXT2 pktTestX,pktTestY-0.600, "delta 3: " + STR(delta3,4,3)&lt;BR /&gt;	&lt;BR /&gt;	!!! ENDE der VERGLEICHRUNDEN&lt;BR /&gt;	&lt;BR /&gt;	IF delta1 &amp;lt; 0 | delta2 &amp;lt; 0 | delta3 &amp;lt; 0 THEN &lt;BR /&gt;!		TEXT2 pktTestX,pktTestY, "NICHT im VorDreieck"&lt;BR /&gt;		flaecheAufNULLsetzenJN&lt;I&gt; = 1&lt;BR /&gt;	ELSE&lt;BR /&gt;!		TEXT2 pktTestX,pktTestY, "IST im VorDreieck"&lt;BR /&gt;		flaecheAufNULLsetzenJN&lt;I&gt; = 0&lt;BR /&gt;	ENDIF &lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!! FESTLEGUNG welche der Flächen zu IGNORIEREN, sprich auf NULL zu setzen ist !!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;!!!!!!!!!!!!! ( Das sind alle Fläche, die bereits in abzugflächen (negative Flächen) komplett enthalten sind ) !!!&lt;BR /&gt;FOR i = 2 TO PktAnz-3 &lt;BR /&gt;	IF flaeche&lt;I&gt; &amp;gt; 0 &amp;amp; flaeche[i-1] &amp;lt; 0 &amp;amp; flaecheAufNULLsetzenJN[i+2] = 0 THEN&lt;BR /&gt;		flaeche&lt;I&gt; = 0&lt;BR /&gt;!		TEXT2 0,1+i*0.20, "A" + STR(i,1,0) + ": " + STR(flaeche&lt;I&gt;,3,2) + "m2"&lt;BR /&gt;	ELSE&lt;BR /&gt;		flaeche&lt;I&gt; = flaeche&lt;I&gt; &lt;BR /&gt;!		TEXT2 0,1+i*0.20, "A" + STR(i,1,0) + ": " + STR(flaeche&lt;I&gt;,3,2) + "m2"&lt;BR /&gt;	ENDIF&lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!! GESAMT-SCHWER-PUNKT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;FOR i = 1 to PktAnz-2&lt;BR /&gt;	summeSPxMalA = summeSPxMalA + schwerPktX[i+1] * flaeche&lt;I&gt;&lt;BR /&gt;	summeSPyMalA = summeSPyMalA + schwerPktY[i+1] * flaeche&lt;I&gt;&lt;BR /&gt;	summeFlaechen = summeFlaechen + flaeche&lt;I&gt;&lt;BR /&gt;NEXT i&lt;BR /&gt;GSPx = summeSPxMalA / summeFlaechen&lt;BR /&gt;GSPy = summeSPyMalA / summeFlaechen &lt;BR /&gt;&lt;BR /&gt;CIRCLE2 	GSPx,GSPy, lll&lt;BR /&gt;HOTSPOT2 	GSPx,GSPy, unID 		: unID=unID+1 &lt;BR /&gt;TEXT2 		GSPx,GSPy-1*lll, "SP"&lt;BR /&gt;TEXT2 		GSPx,GSPy-3*lll, "x:" + STR( GSPx,4,3) &lt;BR /&gt;TEXT2		GSPx,GSPy-5*lll, "y:" + STR( GSPy,4,3) &lt;BR /&gt;TEXT2 		GSPx,GSPy-7*lll, "A:" + STR( ABS(summeFlaechen),3,2) + "m2"&lt;BR /&gt;TEXT2 		GSPx,GSPy-9*lll, "U:" + STR( ABS(umfang),3,2) + "m"&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;&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>Wed, 17 Jun 2020 13:50:07 GMT</pubDate>
    <dc:creator>Ma_Scht</dc:creator>
    <dc:date>2020-06-17T13:50:07Z</dc:date>
    <item>
      <title>Schwerpunkt eines Polygones berechnen</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Schwerpunkt-eines-Polygones-berechnen/m-p/534632#M5669</link>
      <description>Kennt jemand von Euch eine einfache Möglichkeit, den Schwerpunkt einer Polygonfläche zu berechnen? &lt;BR /&gt;&lt;BR /&gt;Ich kenne die Möglichkeiten, eine unregelmäßige Fläche in Scheiben zu schneiden, die entstehenden Trapeze lassen recht einfach den Schwerpunkt der Einzelteile ermitteln und dann über ein Achsmoment die "Gewichtung" der einzelnen Teilflächen mitteln.&lt;BR /&gt;&lt;BR /&gt;Dies Programmäßig umzusetzen - nur um den "Mittelpunkt" zum Einsetzen eines Textblockes zu ermitteln ist wohl "mit Kanonen auf Spatzen schießen"&lt;BR /&gt;&lt;BR /&gt;Gibts da was einfaches? Die Statiker unter Euch müßten sowas eigentlich wissen.. - Etwa so - gib die Koordinaten der Polygonpunkte in eine Matrix und bekomme die XY des Schwerpunktes..</description>
      <pubDate>Sun, 21 Aug 2016 07:58:33 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Schwerpunkt-eines-Polygones-berechnen/m-p/534632#M5669</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2016-08-21T07:58:33Z</dc:date>
    </item>
    <item>
      <title>Re: Schwerpunkt eines Polygones berechnen</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Schwerpunkt-eines-Polygones-berechnen/m-p/534633#M5670</link>
      <description>Hi, habe mich gerade mal "ein Bisschen" damit beschäftigt. &lt;BR /&gt;Wer's mal braucht, bitte sehr, auf eigene Gefahr, (at own risk).&lt;BR /&gt;Der Ansatz ist: PGon in Dreiecke zerlegen. SPs der Dreiecke ermitteln, Flächen der Dreiecke ermitteln unter Nutzung der Flächenvorzeichen (Das ist der Trick &lt;!-- s:-) --&gt;&lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;!-- s:-) --&gt;), ermitteln ob Dreieck in anderem, benacchbartem Dreieck enthalten ist und somit NICHT zu berücksichtigen ist,&lt;BR /&gt;Gesamt-SP ermittel. &amp;lt;120 Zeilen Programmcode - finde ich vertretbar.&lt;BR /&gt;&lt;BR /&gt;Habe noch keinen PGon gefunden wo es NICHT funktioniert, solange sich die Konturen NICHT schneiden und das Parameter-Script ausgeführt wird.&lt;BR /&gt;auf 120g-Papier ausdrucken, ausschneiden, auf den Tikki legen, grinsen !!!&lt;BR /&gt;&lt;BR /&gt;Wenn sich bitte wer findet - ich denke da an einen ganz Speziellen - der die DynHoSpo-Einfüge-Option reinbasteln könnten! &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;Gruß&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;! PARAMETER &lt;BR /&gt;!!! PktAnz (Ganzzahl)&lt;BR /&gt;!!! PktX (Länge) (Als eindimensionales ARRAY)&lt;BR /&gt;!!! PktY (Länge) (Als eindimensionales ARRAY)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!PARAMETER-SCHRIPT&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!! Sorge tragen, dass wenn die Punktanzahl erhöht wird, die Neuen Punkte beim letzten eingefügt werden !!!!!! &lt;BR /&gt;FOR i = PktAnz+1 TO 50&lt;BR /&gt;PARAMETERS	PktX&lt;I&gt; = PktX[PktAnz],&lt;BR /&gt;			PktY&lt;I&gt; = PktY[PktAnz]&lt;BR /&gt;NEXT i&lt;BR /&gt;IF PktAnz &amp;gt; 50 THEN PARAMETERS PktAnz = 50&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!2D-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;!-- m --&gt;&lt;A class="postlink" href="http://media2mult.uni-osnabrueck.de/pmwiki/fields/cg/index.php?n=Main.Polygon"&gt;http://media2mult.uni-osnabrueck.de/pmw ... in.Polygon&lt;/A&gt;&lt;!-- m --&gt;&lt;BR /&gt;!!!!!! &lt;!-- m --&gt;&lt;A class="postlink" href="https://www.inf.hs-flensburg.de/lang/algorithmen/geo/polygon.htm"&gt;https://www.inf.hs-flensburg.de/lang/al ... olygon.htm&lt;/A&gt;&lt;!-- m --&gt;&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!! copyright Ma_Scht, Jun. 2020 !!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!! For free use, but at one's own risk. !!!!!!!!&lt;BR /&gt;!!!!! Zur freien Verwendung, auf eigenes Risiko !!!!!!&lt;BR /&gt;!! Solidarität mit Armen - Spendet mal für was Anderes als den Fussballverein Eurer Kinder !!&lt;BR /&gt;!! und auch mal mehr als 5€ !!&lt;BR /&gt;!! Eine Grauer Star OP kostet in Afrika 30 € - und ein Kind kann wieder sehen !!&lt;BR /&gt;!! Christliche BLindenmission z.B. !!&lt;BR /&gt;!! Bitte nachdenken bevor das Pulver in die nächste Schw...protese gesteckt wird !!&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;EPS = -0.00001&lt;BR /&gt;unID =1&lt;BR /&gt;lll= 0.05		!!!! Länge von Hilsmarkierungen, etc. &lt;BR /&gt;hlp = 0 &lt;BR /&gt;umfang = 0&lt;BR /&gt;summeSPxMalA = 0 &lt;BR /&gt;summeSPyMalA = 0 &lt;BR /&gt;summeFlaechen = 0 &lt;BR /&gt;DIM seitenlaengeA[],&lt;BR /&gt;	seitenlaengeB[],&lt;BR /&gt;	seitenlaengeC[],&lt;BR /&gt;	sss[],&lt;BR /&gt;	flaeche[],&lt;BR /&gt;	seitenhalbierendeX[],&lt;BR /&gt;	seitenhalbierendeY[],&lt;BR /&gt;	schwerPktX[],&lt;BR /&gt;	schwerPktY[],&lt;BR /&gt;	steuerVZ[], &lt;BR /&gt; 	flaecheAufNULLsetzenJN[]&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;	NEXT i&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Außenkonturen des Polygons !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;FOR i = 1 TO PktAnz-1&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], 		 unID : unID=unID+1 &lt;BR /&gt;	umfang = umfang + SQR( (PktX[i+1] - PktX&lt;I&gt;)^2 + (PktY[i+1] - PktY&lt;I&gt;)^2 )&lt;BR /&gt;NEXT i&lt;BR /&gt;	LINE2 PktX[PktAnz],PktY[PktAnz], PktX[1],PktY[1]&lt;BR /&gt;	HOTLINE2 PktX[PktAnz],PktY[PktAnz], PktX[1],PktY[1], unID : unID=unID+1 &lt;BR /&gt;	umfang = umfang + SQR( (PktX[PktAnz] - PktX[1])^2 + (PktY[PktAnz] - PktY[1])^2 )&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! 1. und Letzter Punkt, GRAFISCHE Hervorhebung !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;LINE2 PktX[1]-lll,PktY[1]-lll, PktX[1]+lll,PktY[1]+lll&lt;BR /&gt;LINE2 PktX[1]-lll,PktY[1]+lll, PktX[1]+lll,PktY[1]-lll&lt;BR /&gt;CIRCLE2 PktX[PktAnz],PktY[PktAnz], lll	!!!! Letzter Pkt. &lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Ergänzungskanten der gebildeten Einzeldreiecke !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 3 TO PktAnz-1&lt;BR /&gt;	hlp = hlp + 1&lt;BR /&gt;!	LINE2 PktX[1],PktY[1], PktX&lt;I&gt;,PktY&lt;I&gt;&lt;BR /&gt;NEXT i &lt;BR /&gt;anzahlZwischenlinien = hlp&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Schwerpunkte der Einzelfläche berechnen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 2 TO PktAnz-1 &lt;BR /&gt;	pkt0X = pktX[3]&lt;BR /&gt;	pkt0Y = pktY[3]&lt;BR /&gt;	seitenhalbierendeX&lt;I&gt; = PktX[1] + 0.5 * ( PktX[i+1] - PktX[1] )&lt;BR /&gt;	seitenhalbierendeY&lt;I&gt; = PktY[1] + 0.5 * ( PktY[i+1] - PktY[1] )&lt;BR /&gt;!!!	CIRCLE2 seitenhalbierendeX&lt;I&gt;,	seitenhalbierendeY&lt;I&gt;, 0.05&lt;BR /&gt;!!!	LINE2 PktX&lt;I&gt;, PktY&lt;I&gt;,   seitenhalbierendeX&lt;I&gt;,	seitenhalbierendeY&lt;I&gt;&lt;BR /&gt;	schwerPktX&lt;I&gt; = PktX&lt;I&gt; + 2/3 * ( seitenhalbierendeX&lt;I&gt; - PktX&lt;I&gt; )&lt;BR /&gt;	schwerPktY&lt;I&gt; = PktY&lt;I&gt; + 2/3 * ( seitenhalbierendeY&lt;I&gt; - PktY&lt;I&gt; )&lt;BR /&gt;!	CIRCLE2  schwerPktX&lt;I&gt;, schwerPktY&lt;I&gt;, lll&lt;BR /&gt;!	HOTSPOT2 schwerPktX&lt;I&gt;, schwerPktY&lt;I&gt;, unID 		: unID=unID+1 &lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!! Berechnung des Flächeninhaltes gem &lt;!-- m --&gt;&lt;A class="postlink" href="https://www.inf.hs-flensburg.de/lang/algorithmen/geo/polygon.htm"&gt;https://www.inf.hs-flensburg.de/lang/al ... olygon.htm&lt;/A&gt;&lt;!-- m --&gt; !!&lt;BR /&gt;!!!!!!!!!!! Fläche ist POSITIV wenn P-Gon im UZS gezeichnet, oder NEGATIV wenn P-Gon GEGEN den UZS gezeichnet !!!!&lt;BR /&gt;!!!!!!!!!!! VORWÄRTS-BERECHNUNG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 1 TO PktAnz-2 &lt;BR /&gt;	flaeche&lt;I&gt; = 0.5 * ((PktX[i+1]-PktX[1]) * (PktY[i+2]-PktY[1]) - (PktX[i+2]-PktX[1]) * (PktY[i+1]-PktY[1]))&lt;BR /&gt;!	TEXT2 schwerPktX[i+1],schwerPktY[i+1], "A" + STR(i,1,0) + ": " + STR(flaeche&lt;I&gt;,3,2) + "m2"&lt;BR /&gt;	IF flaeche&lt;I&gt; &amp;lt; 0 THEN !!!! Steuer-VZ für die anschließende Prüfung&lt;BR /&gt;		steuerVZ&lt;I&gt; = -1&lt;BR /&gt;	ELSE &lt;BR /&gt;		steuerVZ&lt;I&gt; =  1&lt;BR /&gt;	ENDIF&lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!! PFÜRUNG ob Test-Punkt im DIRENKTEN FOLGE-Dreieck ist oder NICHT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;!!!!!!!!!!!!! VORWÄRTS-BERECHNUNG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;FOR i = 3 TO PktAnz-2 &lt;BR /&gt;	pkt1X	 = PktX[i-1]&lt;BR /&gt;	pkt1Y	 = PktY[i-1]&lt;BR /&gt;	pkt2X	 = PktX[i-2]&lt;BR /&gt;	pkt2Y 	 = PktY[i-2]&lt;BR /&gt;	pkt3X	 = PktX[1]&lt;BR /&gt;	pkt3Y	 = PktY[1]&lt;BR /&gt;	pkt0X 	 = pkt3X	!!! Pkt NULL ist erf., da Anfang und Ende geschlossen sein müssen&lt;BR /&gt;	pkt0Y 	 = pkt3Y&lt;BR /&gt;&lt;BR /&gt;	pktTestX = PktX&lt;I&gt;	!!! Testet ob Pkt. Nr. 4 beispielsweise in Fläche Nr. 4 enthalten ist (Folgenfläche)&lt;BR /&gt;	pktTestY = PktY&lt;I&gt;	!!! Gleicher Test muss noch mit der VORGÄNGERfläche gemacht werden&lt;BR /&gt;&lt;BR /&gt;	pktAX 	 = pktTestX&lt;BR /&gt;	pktAY 	 = pktTestY&lt;BR /&gt;	&lt;BR /&gt;	!!!! ERSTE VERGLEICHSRUNDE&lt;BR /&gt;	pktBX = pkt0X&lt;BR /&gt;	pktBY = pkt0Y&lt;BR /&gt;	pktCX = pkt1X&lt;BR /&gt;	pktCY = pkt1Y&lt;BR /&gt;	delta1 = steuerVZ&lt;I&gt; * ( (pktBX - pktAX) * (pktCY - pktAY) - (pktBY - pktAY) * (pktCX - pktAX) )&lt;BR /&gt;!	TEXT2 pktTestX,pktTestY-0.200, "delta 1: " + STR(delta1,4,3)&lt;BR /&gt;	&lt;BR /&gt;	!!!! ZWEITE VERGLEICHSRUNDE&lt;BR /&gt;	pktBX = pkt1X&lt;BR /&gt;	pktBY = pkt1Y&lt;BR /&gt;	pktCX = pkt2X&lt;BR /&gt;	pktCY = pkt2Y&lt;BR /&gt;	delta2 = steuerVZ&lt;I&gt; * ( (pktBX - pktAX) * (pktCY - pktAY) - (pktBY - pktAY) * (pktCX - pktAX) )&lt;BR /&gt;!	TEXT2 pktTestX,pktTestY-0.400, "delta 2: " + STR(delta2,4,3)&lt;BR /&gt;	&lt;BR /&gt;	!!!! DRITTE VERGLEICHSRUNDE&lt;BR /&gt;	pktBX = pkt2X&lt;BR /&gt;	pktBY = pkt2Y&lt;BR /&gt;	pktCX = pkt3X&lt;BR /&gt;	pktCY = pkt3Y&lt;BR /&gt;	delta3 = steuerVZ&lt;I&gt; * ( (pktBX - pktAX) * (pktCY - pktAY) - (pktBY - pktAY) * (pktCX - pktAX) )&lt;BR /&gt;!	TEXT2 pktTestX,pktTestY-0.600, "delta 3: " + STR(delta3,4,3)&lt;BR /&gt;	&lt;BR /&gt;	!!! ENDE der VERGLEICHRUNDEN&lt;BR /&gt;	&lt;BR /&gt;	IF delta1 &amp;lt; 0 | delta2 &amp;lt; 0 | delta3 &amp;lt; 0 THEN &lt;BR /&gt;!		TEXT2 pktTestX,pktTestY, "NICHT im VorDreieck"&lt;BR /&gt;		flaecheAufNULLsetzenJN&lt;I&gt; = 1&lt;BR /&gt;	ELSE&lt;BR /&gt;!		TEXT2 pktTestX,pktTestY, "IST im VorDreieck"&lt;BR /&gt;		flaecheAufNULLsetzenJN&lt;I&gt; = 0&lt;BR /&gt;	ENDIF &lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!! FESTLEGUNG welche der Flächen zu IGNORIEREN, sprich auf NULL zu setzen ist !!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;!!!!!!!!!!!!! ( Das sind alle Fläche, die bereits in abzugflächen (negative Flächen) komplett enthalten sind ) !!!&lt;BR /&gt;FOR i = 2 TO PktAnz-3 &lt;BR /&gt;	IF flaeche&lt;I&gt; &amp;gt; 0 &amp;amp; flaeche[i-1] &amp;lt; 0 &amp;amp; flaecheAufNULLsetzenJN[i+2] = 0 THEN&lt;BR /&gt;		flaeche&lt;I&gt; = 0&lt;BR /&gt;!		TEXT2 0,1+i*0.20, "A" + STR(i,1,0) + ": " + STR(flaeche&lt;I&gt;,3,2) + "m2"&lt;BR /&gt;	ELSE&lt;BR /&gt;		flaeche&lt;I&gt; = flaeche&lt;I&gt; &lt;BR /&gt;!		TEXT2 0,1+i*0.20, "A" + STR(i,1,0) + ": " + STR(flaeche&lt;I&gt;,3,2) + "m2"&lt;BR /&gt;	ENDIF&lt;BR /&gt;NEXT i&lt;BR /&gt;&lt;BR /&gt;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR /&gt;!!!!!!!!!!!!! GESAMT-SCHWER-PUNKT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &lt;BR /&gt;FOR i = 1 to PktAnz-2&lt;BR /&gt;	summeSPxMalA = summeSPxMalA + schwerPktX[i+1] * flaeche&lt;I&gt;&lt;BR /&gt;	summeSPyMalA = summeSPyMalA + schwerPktY[i+1] * flaeche&lt;I&gt;&lt;BR /&gt;	summeFlaechen = summeFlaechen + flaeche&lt;I&gt;&lt;BR /&gt;NEXT i&lt;BR /&gt;GSPx = summeSPxMalA / summeFlaechen&lt;BR /&gt;GSPy = summeSPyMalA / summeFlaechen &lt;BR /&gt;&lt;BR /&gt;CIRCLE2 	GSPx,GSPy, lll&lt;BR /&gt;HOTSPOT2 	GSPx,GSPy, unID 		: unID=unID+1 &lt;BR /&gt;TEXT2 		GSPx,GSPy-1*lll, "SP"&lt;BR /&gt;TEXT2 		GSPx,GSPy-3*lll, "x:" + STR( GSPx,4,3) &lt;BR /&gt;TEXT2		GSPx,GSPy-5*lll, "y:" + STR( GSPy,4,3) &lt;BR /&gt;TEXT2 		GSPx,GSPy-7*lll, "A:" + STR( ABS(summeFlaechen),3,2) + "m2"&lt;BR /&gt;TEXT2 		GSPx,GSPy-9*lll, "U:" + STR( ABS(umfang),3,2) + "m"&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;&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>Wed, 17 Jun 2020 13:50:07 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Schwerpunkt-eines-Polygones-berechnen/m-p/534633#M5670</guid>
      <dc:creator>Ma_Scht</dc:creator>
      <dc:date>2020-06-17T13:50:07Z</dc:date>
    </item>
  </channel>
</rss>

