Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Mi 03.02.16 15:22 
Das Programm ermittelt die konvexe Hülle einer Punktmenge(max.99 Punkte).
Die Lösung wird grafisch angezeigt.
ScreenHuelle
Gruß Fiete
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)

Für diesen Beitrag haben gedankt: Narses
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mi 03.02.16 19:25 
Hallo,

Oh, von 1988:
www.entwickler-ecke....iewtopic.php?t=82988
Da im Quelltext ständig Winkel berechnet werden, frage ich mich, ob das der Graham_Scan-Algorithmus ist,

Gruß Horst
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Do 04.02.16 12:05 
Moin Horst_H,
Zitat:
Oh, von 1988:

Es gab eine Aufgabe im BWInf 1987, nannte sich Goldgräberclaim.
Der Algorithmus sieht so aus: 1) suche linksuntersten Punkt
2) suche nächst äußersten Punkt, gibt es mehrere minimale Punkte, dann den am weitsten entfernten nehmen
Dies wird so lange durchgeführt, bis der Startpunkt erreicht ist.
Gruß Fiete

_________________
Fietes Gesetz: use your brain (THINK)
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 05.02.16 08:18 
Hallo,

dann ist das wohl so etwas wie der Jarvis-March-Algorithmus, dort sind noch andere Verfahren erklärt Konvexe Hülle (Dort wird auch beschrieben, das man den Winkel gar nicht so aufwändig berechnen muss, mit Wurzel und Divisionen)
Das Verfahren ist ja bei einer Punktewolke sehr schnell, da ja nur wenige ( h ) Punkte/Linien die konvexe Hülle bilden.Es wird also h*n mal gerechnet.
Ich fand besonders schön, wie die Punkte auf Aufstand erzeugt werden, indem getestest wird, ob an der Stelle auf dem Bild schon ein roter Punkt des vorherigen Kreises um einen Punkt ist.So braucht man keinen Speicher anlegen, um dafür zu sorgen.
Zum Beipiel indem man ein zweidimensionales Feld
ausblenden Delphi-Quelltext
1:
2:
var
  nutzbarePunkte: array[0..Breite Div Radius,0..Hoehe div Radius] of byte;

anlegt und freie Punkte daraus wählt und mit Radius hochskaliert.Aber das sieht dann wieder zu gerastert aus.Man könnte auch Raster aus Sechsecken machen.Ich schweife ab...

Gruß Horst