Exemplo n.º 1
0
        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};
        }