Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Punkte in ein Polygon überführen
11. Mai 2016, 16: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;
|
|
Zitat
|