// Token: 0x060004C0 RID: 1216 RVA: 0x00018864 File Offset: 0x00016A64
        public static Ellipse2 Transform(this AffineTransform2 transformer, Ellipse2 ellipse)
        {
            AffineTransform2 source          = new AffineTransform2(ellipse.Axis0, ellipse.Axis1, ellipse.Center, 1.0);
            AffineTransform2 affineTransform = transformer.Transform(source);

            return(new Ellipse2(affineTransform.Origin, affineTransform.AxisX, affineTransform.AxisY, ellipse.Extent0 * transformer.Scale, ellipse.Extent1 * transformer.Scale));
        }
        // Token: 0x06000491 RID: 1169 RVA: 0x00016ED0 File Offset: 0x000150D0
        private static void ComputeEllipseBoundingBoxVariables(Ellipse2 ellipse, out double tx1, out double tx2, out double ty1, out double ty2, out double x1, out double x2, out double y1, out double y2)
        {
            double x3      = ellipse.Center.X;
            double y3      = ellipse.Center.Y;
            double extent  = ellipse.Extent0;
            double extent2 = ellipse.Extent1;
            double num     = Math.Acos(ellipse.Axis0.Dot(UnitVector2.UnitX));

            if (ellipse.Axis0.Dot(UnitVector2.UnitY) < 0.0)
            {
                num = -num;
            }
            double num2 = Math.Tan(num);
            double num3 = 1.0 / num2;
            double num4 = Math.Cos(num);
            double num5 = Math.Sin(num);

            tx1 = (Math.Atan(-extent2 * num2 / extent) + 6.2831853071795862) % 6.2831853071795862;
            ty1 = (Math.Atan(extent2 * num3 / extent) + 6.2831853071795862) % 6.2831853071795862;
            tx2 = (tx1 + 3.1415926535897931) % 6.2831853071795862;
            ty2 = (ty1 + 3.1415926535897931) % 6.2831853071795862;
            x1  = x3 + extent * Math.Cos(tx1) * num4 - extent2 * Math.Sin(tx1) * num5;
            x2  = x3 + extent * Math.Cos(tx2) * num4 - extent2 * Math.Sin(tx2) * num5;
            y1  = y3 + extent2 * Math.Sin(ty1) * num4 + extent * Math.Cos(ty1) * num5;
            y2  = y3 + extent2 * Math.Sin(ty2) * num4 + extent * Math.Cos(ty2) * num5;
        }
Exemple #3
0
 // Token: 0x060000FD RID: 253 RVA: 0x00004DF1 File Offset: 0x00002FF1
 public EllipticArc2(Ellipse2 ellipse, Angle startAngle, Angle deltaAngle)
 {
     this            = default(EllipticArc2);
     this.Ellipse    = ellipse;
     this.StartAngle = startAngle;
     this.DeltaAngle = deltaAngle;
 }
        // Token: 0x0600048E RID: 1166 RVA: 0x00016D10 File Offset: 0x00014F10
        public static AxisAlignedBox2 ComputeAxisAlignedBoundingBox(this Ellipse2 ellipse)
        {
            double num;
            double num2;
            double num3;
            double num4;
            double val;
            double val2;
            double val3;
            double val4;

            EllipseExtensionMethods.ComputeEllipseBoundingBoxVariables(ellipse, out num, out num2, out num3, out num4, out val, out val2, out val3, out val4);
            return(new AxisAlignedBox2(Math.Min(val, val2), Math.Max(val, val2), Math.Min(val3, val4), Math.Max(val3, val4)));
        }