AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delaunay-Triangulation

Ein Thema von Bjoerk · begonnen am 5. Sep 2014 · letzter Beitrag vom 4. Dez 2015
Antwort Antwort
Seite 1 von 3  1 23      
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Delaunay-Triangulation

  Alt 5. Sep 2014, 16:13
Ich hab leider gar keinen Plan von diesem Algo. Hat jemand mal was in der Richtung gemacht oder eine Idee wie man sowas angehen könnte?

http://de.wikipedia.org/wiki/Delaunay-Triangulation
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 16:29
Wo ist denn dein Problem? Ich habe es auch noch nicht gemacht, aber es sieht doch nicht so schwer aus.
Delphi-Quellcode:
Delaunay := TDelaunay.Create;
Delaunay.Initialize();
For P in Points do Delaunay.Add(P);
Initialize ist einfach und was das 'Add' macht, steht da doch auch.

Edit: Ok, ein wenig hochnäsig. Mach mal 'stepwise refinement' bzw. top down programming(*)
also
Delphi-Quellcode:
Procedure TDelaunay.Add (P : TPoint);
var
  i : Integer;
  tmp : TTriangle;

begin
  for i:=0 to Triangles.Length-1 do
    if Triangles[i].Contains(P) then begin
      tmp := Triangles[i];
      Triangles.Remove(i);
      Triangles.Add(TTriangle.create(tmp.a,p,tmp.b));
      Triangles.Add(TTriangle.create(tmp.b,p,tmp.c));
      Triangles.Add(TTriangle.create(tmp.c,p,tmp.a));
      CheckBoundariesWithFlipAlgorithm;
      exit;
     end;

  raise exception.Create('Point not in triangle');
end;
Ok. Bleibt noch 'CheckBoundariesWithFlipAlgorithm'. Der geht einfach alle Dreiecke durch und prüft die Bedingungen mit diesem Umkreis. Oder nur für die drei Dreiecke, die dazugekommen sind, wäre vielleicht sinniger.

(*) Alles auskodieren, was einem klar ist und alles, was noch nicht klar ist, als Methode aufrufen. Danach die neuen Methoden nach dem gleichen Schema ausformulieren. Klappt meistens, ist gut lesbar und fast schon ein wenig 'clean code'.

Geändert von Dejan Vu ( 5. Sep 2014 um 16:37 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 16:31
Ich habe es zwar schon gemacht, aber so komplett ohne Ansatz und Ausgangslage ist sinnvolle Hilfe nicht möglich. Fang an, und bei konkreten Problemen sind wir sicher gerne dabei - ich zumindest, weil ich finde solche Themen spannend
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#4

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 16:39
Wo ist denn dein Problem? Ich habe es auch noch nicht gemacht, aber es sieht doch nicht so schwer aus.
Delphi-Quellcode:
Delaunay := TDelaunay.Create;
Delaunay.Initialize();
For P in Points do Delaunay.Add(P);
Initialize ist einfach und was das 'Add' macht, steht da doch auch.
Ich habe zwar keinen Führerschein, aber:

- Auto kaufen
- Losfahren

sollte doch wohl kein Problem in einer Millionenstadt darstellen!

Meint wohl Dejan Vu?

MfG
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 16:40
Genau so. Wenn Du das nicht verstehst, dein Problem. Wie man fährt, habe ich oben ja schon gezeigt.
Der Algorithmus wird erklärt und man muss ihn nur in Delphi übersetzen. Wenn man die Sprache beherscht, geht das doch recht flott. Wie man sieht.
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#6

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 16:52
Ganz genau so in #2:

Geändert von Dejan Vu (Heute um 17:37 Uhr)

Hinterher ist man immer schlauer und altklüger ...

MfG
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 17:34
Ok. Ich versuch mal bissl näher zu erläutern. Und gleich vorab, so einfach wie sich das Dejan Vu in seinem judenglichen Leichtsinn vorstellt ist es natürlich nicht. Stellen wir uns eine beliebige Wohnung vor. Diese Wohnung hat Zimmer. Wir stehen in einem dieser Zimmer und schauen nach unten auf den Boden. Was wir dann sehen nennt sich der Grundriss dieses Zimmers. Wir bekommen vom Architekten einen Grundriss der gesamten Wohnung. Die Zimmer nennen wir Polygone und verlegen die gesamte Wohnung mit dreiecks- bzw. vierecksförmigen Parkett. Das Parkett nennen wir finite Elemente. Wir sollen das Parkett wie folgt verlegen: Es dürfen beliebige drei- und viereckige Teile verwendet werden, die Teile sollen jedoch in etwa gleich groß sein. Wir sollen nun in jedes Polygon ein Netz reinlegen ("ParkettFloodFill"), so daß jedes Polygonnetz die Randknoten der benachbarten Polygonnetze teilt. Dann gibt es ggf. Treppenlöcher. Die nennen wir Aussparungen. In diesen Aussparungen gibt es kein Netz. In etwa klar?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 19:06
Wenn es schon um FEM geht: Das Verfahren "Fortscheitende Front" führt meistens zu schöneren Netzen.
Morgen kann ich dir vielleicht etwas ausführlicher helfen.
Miniaturansicht angehängter Grafiken
front.png   delauney.png  
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 19:07
Gerade eben entdeckt. Das hat wohl ein netter Mensch nach Delphi übersetzt. Schau ich mir näher an.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Delaunay-Triangulation

  Alt 5. Sep 2014, 19:08
Wow jfheins, das sieht mega aus. So hätt ich's gern..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz