Punkte umschließendes Polygon ermitteln?

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: Punkte umschließendes Polygon ermitteln?

Beitrag von wp_xyz »

Achso, ich bin auf Laz/main und da gab es eine Überladung von PointDist. Füge einfach den folgenden Code in TADelaunay am Anfang des Implementation-Abschnitts ein:

Code: Alles auswählen

function PointDist(const A, B: TDoublePoint): Double;
begin
  Result := Sqrt(Sqr(A.X - B.X) + Sqr(A.Y - B.Y));
end; 

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Punkte umschließendes Polygon ermitteln?

Beitrag von fliegermichl »

Danke, jetzt lässt es sich compilieren.

Ich gebe Dir Recht, daß es nur mit den Punkten so keinen Sinn ergibt. Aber mal angenommen, ich würde mich für einen Alpha Wert entscheiden.
Während ich hier so sitze und das schreibe, fällt mir was ein. Wenn man alle Dreieckskanten entfernt, die zu jeweils 2 Dreiecken gehören, dann müsste doch die konkave Hülle übrig bleiben.

Ich probiere das mal aus.

wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: Punkte umschließendes Polygon ermitteln?

Beitrag von wp_xyz »

Aber nicht, wenn die Dreiecke durch eine Delaunay-Triangulation ermittelt worden sind, denn die pflastert bis raus zur KONVEXEN Hülle alles mit Dreiecken voll.

wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: Punkte umschließendes Polygon ermitteln?

Beitrag von wp_xyz »

Die Screenshots weiter oben - sind die sind so wie du sie erhältst? Mit fällt auf, dass, von dem in dem ersten Bild abgesetzten kleinen Haus abgesehen, alle Außenlinien dieselbe Farbe haben. Wenn das richtig ist, könntest du die konvexe Hülle bestimmen. Nun läufst du die konvexe Hülle entlang. Sobald du einen Linienzug findest, der im Ausgangsbild vorhanden ist, kennst du die Farbe der Gebäude-Kante. Schließlich suchst du im Ausgangsbild einfach alle Linien mit dieser Farbe.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Punkte umschließendes Polygon ermitteln?

Beitrag von fliegermichl »

Nein, ich bekomme die 3D Koordinaten der Dachflächen.
Die Farben der Kanten bestimme ich selbst in Abhängigkeit des Typs der Kante.

Ich habe mir jetzt eine Liste aller Kanten erstellt, welche nur einer Dachfläche zugeordnet sind.
Im inneren des Daches hat ja jede Kante eine Verbindung mit zwei Dachflächen.

Dann laufe ich die Kanten in dieser Liste ab und erhalte so den Umriss.

Vielen Dank für Eure Hilfe!

Antworten