ingresses function

List<Ingress> ingresses(
  1. LongitudeFunction longitudeAt,
  2. double startJdTT,
  3. double endJdTT, {
  4. double step = 1,
})

Entries of longitudeAt into zodiac signs in startJdTT … endJdTT, including re-entries during retrograde motion. See longitudeCrossings for step.

Implementation

List<Ingress> ingresses(
  LongitudeFunction longitudeAt,
  double startJdTT,
  double endJdTT, {
  double step = 1,
}) => [
  for (final c in longitudeCrossings(
    longitudeAt,
    startJdTT,
    endJdTT,
    period: 30,
    step: step,
  ))
    Ingress(
      c.jdTT,
      // Moving back over a boundary enters the sign below it.
      ((c.longitude / 30).round() - (c.retrograde ? 1 : 0)) % 12,
      c.retrograde,
    ),
];