地図/基礎/Canvas と数学

0..1 を経由する — lerp と map と clamp

値を別の値へ写すとき、いったん 0..1 に正規化してから写す。lerp(a, b, t)t0 のとき a1 のとき b、その間を直線で結ぶ。map はある範囲の値を別の範囲へ移す。tint も同じ仲間で、輝度を 0..255 に clamp して round している。

線形補間が lerp(a, b, t) = a + (b - a)·tt を範囲 [lo, hi] の正規化位置として持てば、t = (v - lo) / (hi - lo) で値を 0..1 に落とし、lerp(lo2, hi2, t) で別の範囲へ戻す——この往復が mapclamp(v, lo, hi)v を区間に閉じ込める関数で、t0..1 をはみ出したとき写った値が範囲外へ飛ぶのを止める。正規化を挟むと、写し先が位置でも明度でも同じ t を流せる。

点を時間 t で左から右へ動かし、その t を色にも map する。位置と明度が連動して、右へ行くほど暗くなる。tc を作る行を clamp から素の t に差し替えると、t1 を超えても止まらず、map した値が範囲を飛び出す。

t0..1 に正規化しておくと、位置 lerp(40, w-40, t) にも明度 lerp(238, 20, t) にも同じ t を流せる。範囲が違っても lerp が橋渡しする。clamp を外した tc = t だと、t1 を越えた時点で xw - 40 を飛び越え、luma20 より下へ抜けて tint の端に張り付く。正規化を挟むと、この飛び出しが clamp 一か所で止まる。