AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language [Festgefressen] Konvexhülle eines polygon berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

[Festgefressen] Konvexhülle eines polygon berechnen

Ein Thema von Mokus · begonnen am 24. Okt 2013 · letzter Beitrag vom 4. Nov 2013
Antwort Antwort
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

AW: [Festgefressen] Konvexhülle eines polygon berechnen

  Alt 30. Okt 2013, 08:28
@TiGü: Siehe auch hier: http://www.delphipraxis.net/177251-javars-march.html

Zum Winkel: Was schonmal auffällt: Du benötigst DREI Punkte, um einen Winkel aufzuspannen. Bei drei Punkten A, B und C lassen sich zwei Strecken, oder besser noch: Vektoren, AB und BC definieren, zwischen denen dann der Winkel bestimmt wird.

Du berechnest also momentan eben nicht die Innenwinkel. Zur Bestimmung eines Extrempunkts (als Startpunkt für den Graham-Scan) würde sich diese Funktion bedingt eigenen, aber nicht zur Innenwinkelberechnung. Außerdem hast du noch einen Bug drin, üblicherweise schreibt man arctan(y/x). Und am besten nimmt man direkt ArcTan2(y, x) dann bekommt man auch Winkel über den ganzen Kreis.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: [Festgefressen] Konvexhülle eines polygon berechnen

  Alt 30. Okt 2013, 08:44
Zum Winkel: Was schonmal auffällt: Du benötigst DREI Punkte, um einen Winkel aufzuspannen. Bei drei Punkten A, B und C lassen sich zwei Strecken, oder besser noch: Vektoren, AB und BC definieren, zwischen denen dann der Winkel bestimmt wird.
exakt... mit 2 Punkten, also einem Vektor lässt sich maximal die Richtung bestimmen - was imho für den Algo aber auch funktionieren sollte.

Außerdem hast du noch einen Bug drin, üblicherweise schreibt man arctan(y/x). Und am besten nimmt man direkt ArcTan2(y, x) dann bekommt man auch Winkel über den ganzen Kreis.
hm... kommt darauf an... in der Vermessungstechnik sind die Bezeichnungen der Achsen vertauscht (x zeigt nach oben, y nach rechts) und auch der Drehwinkel ist entgegengesetzt dem der Mathematik. Insofern KANN das korrekt sein.
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: [Festgefressen] Konvexhülle eines polygon berechnen

  Alt 30. Okt 2013, 09:54
Zeichnerrisch mit Paint ...
Ich habe den Startpunkt; Puntk 1
und ich habe den end Punkt, punkt 2.

Von deisen Beiden rechne ich doch den innen winkel mit Tangenz aus ?

Oder bin ich da Mathematisch gerade falsch !?



[edit] Aber wie kann ich den nun den Javars March richtig anwenden ?! [/edit]
Angehängte Grafiken
Dateityp: jpg Dreieck.jpg (8,6 KB, 14x aufgerufen)
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !

Geändert von Mokus (30. Okt 2013 um 10:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: [Festgefressen] Konvexhülle eines polygon berechnen

  Alt 30. Okt 2013, 10:13
Du hast jetzt leider kein Koordinatensystem gemalt, aber ja, das ist der Winkel, den du berechnest. Ich glaube aber nach wie vor, dass das nicht der Winkel ist, den du berechnen solltest. In deinem pdf steht nämlich:

Zitat:
In CW manner, always
making right turns
􀂄 If fail to turn right,
delete previous point
until the turn is correct.
Und um festzustellen, ob man sich gerade nach "rechts" gedreht hat, reicht der Winkel zur Y-Achse eben nicht aus. (Es sei denn, du speicherst den Winkel von allen vorhergehenden Linien, aber danach sieht mir dein Code nicht aus) Die Beurteilung "rechts" geht ja immer von der letzten Bewegungsrichtung aus. Falls du also vom Punkt A kommt und gerade bei Punkt B bist, ist die Frage ob der Winkel ABC kleiner oder größer als 180° ist. (Alternativ: Ist der Winkel zwischen Y-Achse und AB größer oder kleiner als der Winkel der Y-Achse mit BC ?)
Angehängte Grafiken
Dateityp: jpg algo.jpg (98,3 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: [Festgefressen] Konvexhülle eines polygon berechnen

  Alt 30. Okt 2013, 12:02
result := cos((sqr(dx) - sqr(dy) - sqr(SeiteC)) / (-2 * dy * SeiteC));
Lautet so der Kosinussatz, wenn ich nach Aplha suche,
oder muss ich noch cos 2 machen ? O.o
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: [Festgefressen] Konvexhülle eines polygon berechnen

  Alt 4. Nov 2013, 12:03
Der Kosinussatz hat mit dem Problem leider nichts zu tun. Da du dich dagegen so sträubst, vermute ich mal dass du in der Schule noch keine Vektorrechnung hattest.

Das ist aber auch gar nicht so schlimm, schließlich habe ich dir in dem anderen Thread ja schon diese Formel verlinkt:
http://upload.wikimedia.org/math/6/c...c3fb51c462.png
Dort kannst du einfach die x und y Koordinaten deiner drei Punkte einsetzen und bekommst eine eindeutige Lösung.
Angehängte Grafiken
Dateityp: png 6c6dc7b64bb03df6491011c3fb51c462.png (7,5 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz