Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Polygon - Punkte im Uhrzeigersinn (https://www.delphipraxis.net/193594-polygon-punkte-im-uhrzeigersinn.html)

e-gon 18. Aug 2017 11:35

Polygon - Punkte im Uhrzeigersinn
 
Hallo!

Im Moment versuche ich mich an einem Raumskizzenprogramm. Zunächst gibt der Benutzer die Eckpunkte eines Raumes per Mausklick an, woraus dann ein Polygon erstellt wird. Anschließend kann man an den Wänden per Klick Fenster und Türen einfügen. Ansich funktioniert auch alles, allerdings müssen für die Türen die Punkte des Polygons im Uhrzeigersinn gegeben sein, weil die Türen sonst nach Außen statt nach Innen zeigen.

Gibt es eine einfache Möglichkeit herauszufinden, ob die Punkte im Uhrzeigersinn oder entgegen erstellt wurden? Kann mir jemand ein Stichwort dafür nennen wonach ich da suchen muss? Ich finde einfach nichts dazu...

Gruß
e-gon

Sherlock 18. Aug 2017 11:48

AW: Polygon - Punkte im Uhrzeigersinn
 
VCL oder FMX?

Sherlock

hstreicher 18. Aug 2017 12:35

AW: Polygon - Punkte im Uhrzeigersinn
 
evtl hilf das weiter , ganz unten

http://www.matheboard.de/archive/419771/thread.html

mfg Hannes

ibp 18. Aug 2017 12:43

AW: Polygon - Punkte im Uhrzeigersinn
 
Gaußsche Trapezformel sollte zum Ziel führen

e-gon 18. Aug 2017 12:48

AW: Polygon - Punkte im Uhrzeigersinn
 
@Sherlock
Ich verstehe die Frage nicht. Die Punkte liegen als dynamisches Array von Points vor, die der Funktion
Delphi-Quellcode:
Canvas.Polygon
übergeben werden.

@Hannes
Das muss ich mir mal genauer anschauen.

@ibp
Danke für den Tipp.

himitsu 18. Aug 2017 13:31

AW: Polygon - Punkte im Uhrzeigersinn
 
Hätte einfach gedacht
* Mittelpunkt berechnen
* Winkel des des jeweils ersten und zweiten Punktes vom Mittelpunkt aus berechnen
* Differenz der beiten Winkel
* wenn 0-180° dann sorum und ansonsten andersrum

e-gon 18. Aug 2017 13:45

AW: Polygon - Punkte im Uhrzeigersinn
 
Die Lösung war die Gaußsche Trapezformel.

Delphi-Quellcode:
var
  P: Array of TPoint;
  n,i: Word;
  Summe: Extended;

...

Summe:= 0;
n:= Length(P);
for i:= 0 to n-1 do Summe:= Summe+(P[i].Y+P[(i+1) mod n].Y)*(P[i].X+P[(i+1) mod n].X);
Wenn Summe>0 dann Uhrzeigersinn, sonst Gegenuhrzeigersinn.

Gruß und Danke an alle!
e-gon

Sherlock 18. Aug 2017 14:27

AW: Polygon - Punkte im Uhrzeigersinn
 
Zitat:

Zitat von e-gon (Beitrag 1378983)
@Sherlock
Ich verstehe die Frage nicht. Die Punkte liegen als dynamisches Array von Points vor, die der Funktion
Delphi-Quellcode:
Canvas.Polygon
übergeben werden.

FMX liefert einiges mit, daß bei der Arbeit mit 3D-Objekten hilft. VCL... nicht so sehr, wie du siehst. Das ist alles worauf meine Frage hinaus wollte.

Sherlock

Rollo62 18. Aug 2017 15:15

AW: Polygon - Punkte im Uhrzeigersinn
 
Die Frage wäre vielleicht auch ob sich die Polygone selbst schneiden und zerteilen, oder nicht.
Bei so komplexen Polygonen kann es ganz schön unübersichtlich werden.
Funktioniert die Gaußsche Formel da auch noch 100% sicher ?

Rollo

Uwe Raabe 18. Aug 2017 15:23

AW: Polygon - Punkte im Uhrzeigersinn
 
Zitat:

Zitat von Rollo62 (Beitrag 1379004)
Die Frage wäre vielleicht auch ob sich die Polygone selbst schneiden und zerteilen, oder nicht.
Bei so komplexen Polygonen kann es ganz schön unübersichtlich werden.
Funktioniert die Gaußsche Formel da auch noch 100% sicher ?

Solange die Definition von rechts/links mit Flache > 0 oder < 0 definiert ist, funktioniert das schon.

Nimmt man z.B. ein Polygon, daß eine Acht bildet: Was ist denn da links/rechts rum?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf