31 lines
766 B
Swift
31 lines
766 B
Swift
//
|
|
// 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
|
|
}
|