Пример #1
0
        public static Arc GetArc(float radius, int sides, float startingAngle, float radians)
        {
            Arc points = new Arc();

            points.AddRange(GetCircle(radius, sides));
            points.RemoveAt(points.Count - 1);

            double curAngle     = 0.0;
            double anglePerSide = MathHelper.TwoPi / sides;

            while ((curAngle + (anglePerSide / 2.0)) < startingAngle)
            {
                curAngle += anglePerSide;

                points.Add(points[0]);
                points.RemoveAt(0);
            }

            points.Add(points[0]);
            int sidesInArc = (int)((radians / anglePerSide) + 0.5);

            points.RemoveRange(sidesInArc + 1, points.Count - sidesInArc - 1);

            return(points);
        }