예제 #1
0
        public override void imethod_3(
            Class95 loop,
            Class88 curve,
            Class107 coedge,
            Class917 approximation,
            Class258 accuracy)
        {
            Matrix4D    canonicalTransformation = this.FromCanonicalTransformation;
            Interface27 interval          = this.Interval;
            bool        directionReversed = coedge.DirectionReversed;
            Class102    startVertex       = coedge.StartVertex;
            Class102    endVertex         = coedge.EndVertex;
            Interface27 nterface27;

            if (startVertex != endVertex)
            {
                Matrix4D inverse  = canonicalTransformation.GetInverse();
                Class105 point1   = startVertex.Point;
                Class105 point2   = endVertex.Point;
                Point3D  point3D1 = point1.method_4(inverse);
                Point3D  point3D2 = point2.method_4(inverse);
                nterface27 = (Interface27) new Class437(System.Math.Atan2(point3D1.Y, point3D1.X), System.Math.Atan2(point3D2.Y, point3D2.X));
            }
            else
            {
                Matrix4D inverse = canonicalTransformation.GetInverse();
                Point3D  point3D = startVertex.Point.method_4(inverse);
                double   start   = System.Math.Atan2(point3D.Y, point3D.X);
                double   end     = directionReversed ? start - 2.0 * System.Math.PI : start + 2.0 * System.Math.PI;
                nterface27 = (Interface27) new Class437(start, end);
            }
            int    num1   = Class247.smethod_7(this.vector3D_1.GetLength(), accuracy);
            double start1 = nterface27.Start;
            double end1   = nterface27.End;

            if (directionReversed)
            {
                if (start1 < end1)
                {
                    end1 -= 2.0 * System.Math.PI;
                }
            }
            else if (start1 > end1)
            {
                end1 += 2.0 * System.Math.PI;
            }
            double num2 = (end1 - start1) / (double)num1;

            approximation.method_0(coedge.StartLocation);
            for (int index = 1; index < num1; ++index)
            {
                double  num3  = (double)index * num2 + start1;
                double  x     = System.Math.Cos(num3);
                double  y     = System.Math.Sin(num3);
                Point3D point = canonicalTransformation.Transform(new Point3D(x, y, 0.0));
                approximation.method_0(point);
            }
            approximation.method_0(coedge.EndLocation);
        }
예제 #2
0
    // Token: 0x06000499 RID: 1177 RVA: 0x00021ACC File Offset: 0x0001FCCC
    public override Class80 vmethod_3(Class80 class80_0)
    {
        base.method_1(class80_0.method_0());
        int num = class80_0.vmethod_2();

        if (num == 3)
        {
            Class105 @class = (Class105)class80_0;
            this.method_5(@class.method_4());
            this.method_7(@class.method_6());
            base.method_3(@class.method_2());
            return(this);
        }
        throw new ArgumentOutOfRangeException();
    }
예제 #3
0
 public int method_2(Class105 point)
 {
     return(this.method_0(point.method_4(this.matrix4D_0)));
 }
예제 #4
0
    // Token: 0x0600049A RID: 1178 RVA: 0x00021B24 File Offset: 0x0001FD24
    public override bool vmethod_7(Class104 class104_0)
    {
        Class105 @class = (Class105)class104_0;

        return(this.method_4() == @class.method_4() && Class30.smethod_0(this.method_6(), @class.method_6()));
    }