Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Drahtgitteroptimierung evtl. mit Baumstruktur. Wie?

  Alt 14. Jan 2004, 18:57
Hallo dizzy,

ich gehe nach Deiner Beschreibung davon aus, dass Du bisher keine Datentypen für die Vertices bzw Faces besitzt. Darüber hinaus scheints Du über keine Art von Container dieser nicht-vorhandenen Datentypen zu verfügen.

Führe beides in der Form TVertex, TShape bzw TVertices und TShapes in Form von Klassen ein bzw. schreibe Dir Hilfsfunktionen, wenn Du mit dynamischen Arrays und Records oder etas ähnlichem Arbeiten möchtest.

Neben der Möglichkeit, dem Container TVertices neue Punkte hinzuzufügen, z.B.
Delphi-Quellcode:
var
  myVertex: TVertex;
begin
  myVertex:= myVertices.Add(x, y, z);
solltest Du auch Methoden zum Finden (Find), Löschen (Clear) etc. erstellen, so dass Du mit der Methode
Delphi-Quellcode:
function TVertices.FindOrCreateAndAdd(const X, Y, Z: Integer): TVertex;
begin
  if Self.Has(X, Y, Z) then
    Result:= Self.Find(X, Y, Z)
  else
    Result:= Self.Add(X, Y, Z);
end;
Dein Problem lösen können solltest:

Code:
Laden der Punkte nach EingabePunkte (TVertices)
Laden der Flächen nach EingabeFlächen (TShapes)
Erzeugen einer Leeren Punktmenge (TVertices)
Erzeugen einer Leeren Flächenmenge (TShapes)
Für jede Fläche f in EingabeFlächen
  Wenn Fläche nicht in AusgebeFlächen
    erstelle neue Fläche g
    Für jeden Punkt p in f
      q:= findeOderErzeugePunkt in AusgabePunkte
      füge q zu g hinzu
    füge g den Ausgabeflächen hinzu
Speichere die AusgabePunkte
Speichere die AusgabeFlächen
Bleiben nun nur noch die Funktionen zum Laden/Speichern
gruß, choose
  Mit Zitat antworten Zitat