42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace StructureHelperCommon.Models.Shapes
|
|
{
|
|
public class PolygonArcSegment : IPolygonArcSegment
|
|
{
|
|
|
|
public Guid Id { get; }
|
|
public IVertex StartVertex { get; set; }
|
|
public IVertex EndVertex { get; set; }
|
|
public IVertex Center { get; }
|
|
public double Radius { get; }
|
|
public double StartAngle { get; }
|
|
public double SweepAngle { get; }
|
|
public PolygonArcSegment(Guid id, IVertex startVertex, IVertex center, double radius, double startAngleDeg, double sweepAngleDeg)
|
|
{
|
|
Id = id;
|
|
StartVertex = startVertex;
|
|
Center = center;
|
|
Radius = radius;
|
|
StartAngle = startAngleDeg;
|
|
SweepAngle = sweepAngleDeg;
|
|
EndVertex = new Vertex(Guid.NewGuid());
|
|
UpdateEndFromParameters();
|
|
}
|
|
|
|
public void UpdateEndFromParameters()
|
|
{
|
|
double endAngle = StartAngle + SweepAngle;
|
|
double endVertexX = Center.Point.X + Radius * Math.Cos(endAngle);
|
|
double endVertexY = Center.Point.Y + Radius * Math.Sin(endAngle);
|
|
EndVertex.Point.X = endVertexX;
|
|
EndVertex.Point.Y = endVertexY;
|
|
|
|
}
|
|
}
|
|
}
|