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

@@ -53,19 +53,23 @@ namespace FieldVisualizer.Services.PrimitiveServices
List<double> coords = new List<double>();
foreach (var primitive in valuePrimitives)
{
if (primitive is IRectanglePrimitive)
if (primitive is IRectanglePrimitive rectanglePrimitive)
{
IRectanglePrimitive rectanglePrimitive = primitive as IRectanglePrimitive;
coords.Add(rectanglePrimitive.CenterX + rectanglePrimitive.Width / 2);
coords.Add(rectanglePrimitive.CenterX - rectanglePrimitive.Width / 2);
}
else if (primitive is ICirclePrimitive)
else if (primitive is ICirclePrimitive circlePrimitive)
{
ICirclePrimitive circlePrimitive = primitive as ICirclePrimitive;
coords.Add(circlePrimitive.CenterX + circlePrimitive.Diameter / 2);
coords.Add(circlePrimitive.CenterX - circlePrimitive.Diameter / 2);
}
else { throw new FieldVisulizerException(ErrorStrings.PrimitiveTypeIsUnknown);}
else if (primitive is ITrianglePrimitive triangle)
{
coords.Add(triangle.Point1.X);
coords.Add(triangle.Point2.X);
coords.Add(triangle.Point3.X);
}
else { throw new FieldVisulizerException(ErrorStrings.PrimitiveTypeIsUnknown); }
}
return coords;
}
@@ -87,6 +91,12 @@ namespace FieldVisualizer.Services.PrimitiveServices
coords.Add(circlePrimitive.CenterY + circlePrimitive.Diameter / 2);
coords.Add(circlePrimitive.CenterY - circlePrimitive.Diameter / 2);
}
else if (primitive is ITrianglePrimitive triangle)
{
coords.Add(triangle.Point1.Y);
coords.Add(triangle.Point2.Y);
coords.Add(triangle.Point3.Y);
}
else { throw new FieldVisulizerException(ErrorStrings.PrimitiveTypeIsUnknown); }
}
return coords;