Einzelnen Beitrag anzeigen

Bjoerk

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

AW: Punkte in ein Polygon überführen

  Alt 11. Mai 2016, 15:14
Fein. Sieht gut aus. Ich hab hier jedoch i.d.R. mehrere Polygone übereinder und/oder die Polygone können sich überlappen. Außerdem kann ein Polygon rechts- oder linksdrehend sein und aus nur einem oder 2 Punkten bestehen (Pfosten auf Decke, Wand auf Decke, Punktlager, Unterzug ect..). Diese Punkte, Linien und Ränder müssen sich im FE Raster wiederfinden. Und der User gibt eine max. Elementgröße vor. Deshalb der Aufwand mit dem Raster.

Beispiel:
Delphi-Quellcode:
var
  Areas: TAreas;
begin
  Areas := TAreas.Create;
  try
    Areas.Count := 2;

    Areas[0].Add(FloatPoint(0, 0));
    Areas[0].Add(FloatPoint(3, 0));
    Areas[0].Add(FloatPoint(5, 2));
    Areas[0].Add(FloatPoint(5, 0));
    Areas[0].Add(FloatPoint(8.5, 0));
    Areas[0].Add(FloatPoint(8.5, 4));
    Areas[0].Add(FloatPoint(10, 4));
    Areas[0].Add(FloatPoint(10, 1));
    Areas[0].Add(FloatPoint(12.5, 3.5));
    Areas[0].Add(FloatPoint(11, 6));
    Areas[0].Add(FloatPoint(8.5, 6));
    Areas[0].Add(FloatPoint(5, 8));
    Areas[0].Add(FloatPoint(3, 6));
    Areas[0].Add(FloatPoint(5, 6));
    Areas[0].Add(FloatPoint(4, 4));
    Areas[0].Add(FloatPoint(1.5, 3.5));
    Areas[0].Add(FloatPoint(0, 8));
    Areas[0].Add(FloatPoint(0, 3));
    Areas[0].Add(FloatPoint(1.5, 1.5));

    Areas[1].Add(FloatPoint(6, 3));
    Areas[1].Add(FloatPoint(7, 4.5));
    Areas[1].Add(FloatPoint(8, 3));

    FPolygonMesh.TriangleMesh(Areas, 1, 1);

    PaintBox.Invalidate;
  finally
    Areas.Free;
  end;
Miniaturansicht angehängter Grafiken
trianglemeshexample2.jpg  
  Mit Zitat antworten Zitat