public override Point2D GetPointAtParam(double par) { Vector2D vec = new Vector2D(Radius, StartAngle); Angle angle = new Angle(IsClockWise ? -par : par); return(Center + vec.RotateBy(angle)); }
public override Point2D GetPointAtParam(double par) { Angle angle = StartAngle + new Angle(IsClockWise ? -par : par); Vector2D vec = new Vector2D( Major * Math.Cos(angle), Minor * Math.Sin(angle)); return(Center + vec.RotateBy(Rotation)); }
public CircleArc2D(Point2D start, Point2D end, double bulge) { int sign = Math.Sign(bulge); IsClockWise = sign == -1; bulge = Math.Abs(bulge); Point2D cen = (start + end) / 2; Vector2D vec = (end - start) / 2; vec = vec.RotateBy(Angle.Degree90); vec *= (1 - bulge) * sign; Center = cen + vec; vec = start - Center; Radius = vec.Length; StartAngle = vec.Angle; EndAngle = (end - Center).Angle; }