算術マネージャ
式を見りゃ分かる。って次元もあるけど、わからんもんもある
用途や役割に注目した名づけをしたいので、汎用の算術ライブラリでは対応できない
(その計算をした値には何の意味があるのか・・・・?)
凡例:
i:for文で使うインデックスのような、0,1,2,3...と増えていく値
rate:0~1の値。単位化した値。
rand():0~1の乱数
画像サイズの変更比率計算
TODO
線形に増える値を周期的な値に変換する
i % b 的なやつで、のこぎり波のような周期
cos(i) を使った行って戻るタイプの周期
上限数がある値を0~1の値にするやつ。割合とかあの辺
current / max
rate * max 逆処理
ノーマライズ
値域を変える
rand() * 2 - 1 で乱数の値域を-1~1にしたりとか。よくやる
(rand() + 1) * 0.5 で戻したり
単位化した値にしか操作出来ない
秒速の値をフレーム経過時間を使って動的FPSに対応する奴。Unityでよく使う
meterPerSecond * Time.deltaTime
物理計算
position = velocity * time
velocity = accell * time
値のクリッピング
max(min(a, maxValue), minValue) 分かるけどぱっと見で判断付かない
連続値を段階的な値にする(ポスタリゼーション的な)
floor(rate * 10) / 9 これで10段階に分解できる
floor(rate * 段階数) / (段階数-1) と言う計算
段階数-1が結構キモで、これにより値域を変えずに分割出来る
https://gyazo.com/7ae583f861fa69abb9ae3f21f54668bf
値域入力バーの段階制御とか
自由に動くバーをカコカコさせる
floorは日本語で床関数と言う、少数切り捨て処理
連続値を段階的な値にする(が、0を含まない)
ceil(rate * 10) / 10
https://gyazo.com/8a005cb5058b1e82b03a45a4a892b7aa
インデックスからページ番号の特定とか
インデックス番号102番は、全8ページ中何ページ目にあるでしょう? みたいな計算
整数部と少数部の分割
code:js
var integer = floor(x)
var decimal = x - integer
1次配列をn桁折り返しで行列に並べたりする時によく使う
狙った値にするための係数を割り出す
target / max 200pxの画像を60pxにするための縮尺係数を知りたかった
値域の反転
1 - rate 0.8を0.2にしたりする
偶数奇数判定
number & 1 == 1 ビット演算して、末尾のビットが立ってるかどうか(1ビット目は+1するかどうかなので)を見る。速い
連続値をリピートする値にする
Time.time % 10 0~10をリピートする数字になる
return mod(p.xz, 10) - 10 * 0.5 2次元(シェーダ)の例
N次ベクトルの正規化
vector / sqrt(sum(vector))で作れる