クランプ処理
概要
クランプ処理は、値、最小値、最大値
を渡して、値が最小値~最大値の範囲を超えないように調整を行う。
コード例
function clamp(value: number, min: number, max: number): number {
return Math.max(Math.min(value, max), min);
}
value が min 未満なら min に、 value が max より大きいなら max にして、 value の値が min ~ max の範囲から外れないように調整する。
解説/アルゴリズム
value = Math.min(value, max);
value = Math.max(value, min);
Math.min(value, max)
は、上限値である max の値を、value が超えないように調整するコードになる。もし max より value の値の方が大きいなら Math.min() で選ばれるのは max になる。value が max 以下なら範囲内に収まっているということで value の値が引き継がれる。
Math.max(value, min)
は、下限値である min の値を、value が下回らないように調整するコードになる。もし min より value の値の方が小さいなら Math.max()で選ばれるのは min になる。value が min 以上なら範囲内に収まっているということで value の値が引き継がれる。
Math.min() の後に Math.max() を実行しているが、この処理が反対になってもよい。