Exemplo n.º 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);
        }
Exemplo n.º 2
0
 public static int smethod_7(double radius, Class258 accuracy)
 {
     return(Class247.smethod_8(radius, accuracy, 16));
 }