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))); }
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); }