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