Add triangulation of polygon

This commit is contained in:
Evgeny Redikultsev
2025-10-26 22:19:25 +05:00
parent 196dc636bb
commit 09dcf4e7e9
52 changed files with 686 additions and 180 deletions

View File

@@ -67,7 +67,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
var ndms = new List<INdm>();
var options = new CircleTriangulationLogicOptions(this)
{
triangulationOptions = triangulationOptions
TriangulationOptions = triangulationOptions
};
var logic = new CircleTriangulationLogic(options);
ndms.AddRange(logic.GetNdmCollection());

View File

@@ -1,6 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Shapes;
using StructureHelperCommon.Models.Shapes.Logics;
using StructureHelperCommon.Services;
namespace StructureHelperLogics.NdmCalculations.Primitives

View File

@@ -28,6 +28,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives.Logics
if (ReferenceEquals(targetObject, sourceObject)) { return; }
targetObject.Triangulate = sourceObject.Triangulate;
tupleUpdateStrategy.Update(targetObject.UsersPrestrain, sourceObject.UsersPrestrain);
tupleUpdateStrategy.Update(targetObject.AutoPrestrain, sourceObject.AutoPrestrain);
if (UpdateChildren == true)
{
if (sourceObject.HeadMaterial != null)

View File

@@ -46,7 +46,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
public IEnumerable<INdm> GetNdms(ITriangulationOptions triangulationOptions)
{
var options = new PointTriangulationLogicOptions(this) { triangulationOptions = triangulationOptions};
var options = new PointTriangulationLogicOptions(this) { TriangulationOptions = triangulationOptions};
var logic = new PointTriangulationLogic(options);
return logic.GetNdmCollection();
}

View File

@@ -78,7 +78,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
{
var options = new RebarTriangulationLogicOptions(this)
{
triangulationOptions = triangulationOptions
TriangulationOptions = triangulationOptions
};
var logic = new RebarTriangulationLogic(options);
var rebar = logic.GetRebarNdm();
@@ -89,7 +89,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
{
var options = new RebarTriangulationLogicOptions(this)
{
triangulationOptions = triangulationOptions
TriangulationOptions = triangulationOptions
};
var logic = new RebarTriangulationLogic(options);
var concrete = logic.GetConcreteNdm();

View File

@@ -53,7 +53,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
var ndms = new List<INdm>();
var options = new RectangleTriangulationLogicOptions(this)
{
triangulationOptions = triangulationOptions
TriangulationOptions = triangulationOptions
};
var logic = new RectangleTriangulationLogic(options);
ndms.AddRange(logic.GetNdmCollection());

View File

@@ -16,11 +16,11 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
public string? Name { get; set; } = string.Empty;
public IPoint2D Center { get; set; } = new Point2D();
public IShape Shape => shape;
public INdmElement NdmElement { get; } = new NdmElement(Guid.NewGuid());
public INdmElement NdmElement { get; set; } = new NdmElement(Guid.NewGuid());
public ICrossSection? CrossSection { get; set; }
public IVisualProperty VisualProperty { get; } = new VisualProperty { Opacity = 0.8d };
public IVisualProperty VisualProperty { get; set; } = new VisualProperty { Opacity = 0.8d };
public double RotationAngle { get; set; }
public IDivisionSize DivisionSize { get; } = new DivisionSize(Guid.NewGuid());
public IDivisionSize DivisionSize { get; set; } = new DivisionSize(Guid.NewGuid());
public ShapeNdmPrimitive(Guid id)
{
Id = id;
@@ -38,7 +38,9 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
public IEnumerable<INdm> GetNdms(ITriangulationOptions triangulationOptions)
{
throw new NotImplementedException();
var triangulationLogicOption = new LinePolygonTriangulationLogicOption(this, triangulationOptions);
var logic = new LinePolygonTriangulationLogic(triangulationLogicOption);
return logic.GetNdmCollection();
}
public List<INamedAreaPoint> GetValuePoints()
@@ -74,7 +76,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
{
if (shape is ILinePolygonShape polygon)
{
var newShape = PolygonGeometryUtils.GetTratsfromedPolygon(polygon, Center.X, Center.Y);
var newShape = PolygonGeometryUtils.GetTransfromedPolygon(polygon, Center.X, Center.Y);
var calculator = new PolygonCalculator();
return calculator.ContainsPoint(newShape, point);
}