private double[] GetEllipseParameters(Ellipse ellipse) { double atan1; double atan2; if (ellipse.IsFullEllipse) { atan1 = 0.0; atan2 = MathHelper.TwoPI; } else { Vector2 startPoint = new Vector2(ellipse.Center.X, ellipse.Center.Y) + ellipse.PolarCoordinateRelativeToCenter(ellipse.StartAngle); Vector2 endPoint = new Vector2(ellipse.Center.X, ellipse.Center.Y) + ellipse.PolarCoordinateRelativeToCenter(ellipse.EndAngle); double a = ellipse.MajorAxis*0.5; double b = ellipse.MinorAxis*0.5; double px1 = (startPoint.X - ellipse.Center.X)/a; double py1 = (startPoint.Y - ellipse.Center.Y)/b; double px2 = (endPoint.X - ellipse.Center.X)/a; double py2 = (endPoint.Y - ellipse.Center.Y)/b; atan1 = Math.Atan2(py1, px1); atan2 = Math.Atan2(py2, px2); } return new[] {atan1, atan2}; }