transits function

dynamic transits(
  1. dynamic tle,
  2. dynamic qth,
  3. DateTime start,
  4. DateTime end,
  5. dynamic minElevation,
  6. dynamic maxTransits,
)

Implementation

transits(tle, qth, DateTime start, DateTime end, minElevation, maxTransits) {
  if (minElevation == null) {
    minElevation = defaultMinElevation;
  }

  if (maxTransits == null) {
    maxTransits = max_iterations;
  }

  var tles = tle.split('\n');
  var satrec = twoline2satrec(tles[1], tles[2]);
  if (_badSat(satrec, qth, start)) {
    return [];
  }

  var time = start.millisecondsSinceEpoch;
  var transits = [];
  var iterations = 0;

  while (iterations < max_iterations && transits.length < maxTransits) {
    var transit = _quickPredict(satrec, qth, start, end);
    if (transit == null) {
      break;
    }
    if (transit.end > end.millisecondsSinceEpoch) {
      break;
    }
    if (transit.end > start.millisecondsSinceEpoch &&
        transit.maxElevation > minElevation) {
      transits.add(transit);
    }
    time = transit.end + 60 * 1000;
    iterations += 1;
  }

  return transits;
}