Math.swift 450 B

123456789101112131415161718
  1. //
  2. // Math.swift
  3. // LoopKitUI
  4. //
  5. // Created by Michael Pangburn on 3/23/19.
  6. // Copyright © 2019 LoopKit Authors. All rights reserved.
  7. //
  8. func fractionThrough<T: FloatingPoint>(
  9. _ value: T,
  10. in range: ClosedRange<T>,
  11. using transform: (T) -> T = { $0 }
  12. ) -> T {
  13. let transformedLowerBound = transform(range.lowerBound)
  14. return (transform(value) - transformedLowerBound) / (transform(range.upperBound) - transformedLowerBound)
  15. }