determineSegment function

int determineSegment(
  1. List<WheelSegment> segments,
  2. double endRotation
)

Determines which segment index is at the top position based on the final endRotation.

Implementation

int determineSegment(List<WheelSegment> segments, double endRotation) {
  final double normalizedAngle = endRotation % (2 * pi);
  final double segmentAngle = 2 * pi / segments.length;
  final double invertedAngle = 2 * pi - normalizedAngle;
  final int segmentIndex = (invertedAngle ~/ segmentAngle) % segments.length;

  return segmentIndex;
}