示例#1
0
        public Edge PerpendicularOnPerimeter(Ellipse ellipse)
        {
            Class12.point_0   = new Point(this.double_0, this.double_1, this.double_2);
            Class12.ellipse_0 = ellipse.DeepCopy();
            LineSearch.ObjectiveFunction function = new LineSearch.ObjectiveFunction(Class12.smethod_0);
            double parameterAtPoint = ellipse.GetParameterAtPoint(Class12.point_0);
            double tetha;

            if (parameterAtPoint <= 3.1415926535897931)
            {
                tetha = LineSearch.GoldenSection(0.001 * Global.AbsoluteEpsilon, 0.0, 3.1415926535897931, function);
            }
            else
            {
                tetha = LineSearch.GoldenSection(0.001 * Global.AbsoluteEpsilon, 3.1415926535897931, 6.2831853071795862, function);
            }
            return(new Edge(this, ellipse.GetPointAtParameter(tetha)));
        }
示例#2
0
        private PointSet method_0(Ellipse ellipse_2, Point point_0, int int_0)
        {
            PointSet pointSet         = new PointSet();
            double   parameterAtPoint = ellipse_2.GetParameterAtPoint(point_0);
            double   num = 6.2831853071795862 / (double)int_0;

            for (int i = 0; i < int_0; i++)
            {
                double num2 = parameterAtPoint + (double)i * num;
                if (num2 > 6.2831853071795862)
                {
                    num2 -= 6.2831853071795862;
                }
                Point pointAtParameter = ellipse_2.GetPointAtParameter(num2);
                pointSet.Add(pointAtParameter);
            }
            return(pointSet);
        }