// // MathHelpers.swift // SheetImagePicker // // Created by Shadowfacts on 9/24/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import UIKit func clamp(_ value: CGFloat, from: CGFloat, to: CGFloat) -> CGFloat { if value < from { return from } else if value > to { return to } else { return value } } func smoothstep(value: CGFloat, from: CGFloat, to: CGFloat) -> CGFloat { let x = clamp((value - from) / (to - from), from: 0, to: 1) // 3x^2 - 2x^3 return 3 * pow(x, 2) - 2 * pow(x, 3) } func lerp(_ value: CGFloat, min: CGFloat, max: CGFloat, from: CGFloat, to: CGFloat) -> CGFloat { let value = clamp((value - min) / (max - min), from: 0, to: 1) return value * (to - from) + from }