//------------------------------------------------------------------------------ private static TPolygon BuildArc(TDoublePoint pt, double a1, double a2, double r) { int steps = (int)Math.Max(6, Math.Sqrt(Math.Abs(r)) * Math.Abs(a2 - a1)); TPolygon result = new TPolygon(); result.Capacity = steps; int n = steps - 1; double da = (a2 - a1) / n; double a = a1; for (int i = 0; i <= n; ++i) { double dy = Math.Sin(a) * r; double dx = Math.Cos(a) * r; result.Add(new TDoublePoint(pt.X + dx, pt.Y + dy)); a = a + da; } return(result); }
//------------------------------------------------------------------------------ private static TPolygon BuildArc(TDoublePoint pt, double a1, double a2, double r) { int steps = (int)Math.Max(6, Math.Sqrt(Math.Abs(r)) * Math.Abs(a2 - a1)); TPolygon result = new TPolygon(); result.Capacity = steps; int n = steps - 1; double da = (a2 - a1) / n; double a = a1; for (int i = 0; i <= n; ++i) { double dy = Math.Sin(a) * r; double dx = Math.Cos(a) * r; result.Add(new TDoublePoint(pt.X + dx, pt.Y + dy)); a = a + da; } return result; }