kepler3 function

double kepler3(
  1. double e,
  2. double m
)

Solves Kepler's equation by binary search (53 iterations).

Implementation

double kepler3(double e, double m) {
  var mr = m % (2 * math.pi);
  if (mr < 0) mr += 2 * math.pi;
  var f = 1;
  if (mr > math.pi) {
    f = -1;
    mr = 2 * math.pi - mr;
  }
  var e0 = math.pi * 0.5;
  var d = math.pi * 0.25;
  for (var i = 0; i < 53; i++) {
    final m1 = e0 - e * math.sin(e0);
    if (mr - m1 < 0) {
      e0 -= d;
    } else {
      e0 += d;
    }
    d *= 0.5;
  }
  if (f < 0) e0 = -e0;
  return e0;
}