//C++ TO C# CONVERTER NOTE: C# does not allow default values for parameters. Overloaded methods are inserted above. //ORIGINAL LINE: static double Calculate(double M, double e, int nIterations = 53) public static double CalculateIter(double M, double e, int nIterations) { //Convert from degrees to radians M = CT.D2R(M); double PI = CT.PI(); double F = 1; if (M < 0) { F = -1; } M = Math.Abs(M) / (2 * PI); M = (M - (int)(M)) * 2 * PI * F; if (M < 0) { M += 2 * PI; } F = 1; if (M > PI) { F = -1; } if (M > PI) { M = 2 * PI - M; } double E = PI / 2; double scale = PI / 4; for (int i = 0; i < nIterations; i++) { double R = E - e * Math.Sin(E); if (M > R) { E += scale; } else { E -= scale; } scale /= 2; } //Convert the result back to degrees return(CT.R2D(E) * F); }
public static double LengthOfEllipse(double e, double a) { double b = a * Math.Sqrt(1 - e * e); return(CT.PI() * (3 * (a + b) - Math.Sqrt((a + 3 * b) * (3 * a + b)))); }