public Edge PerpendicularOnPerimeter(Ellipse ellipse) { Class12.point_0 = new Point2(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))); }