NSLinear(), NSDefSpline()&NSSpline()

追加された三つの命令、NSLinear(), NSDefSpline()&NSSpline()について。
応用範囲の広いものが追加されてとてもありがたいことですよ、と。

NSLiner()

●y=NSLinear(x0,y0,x1,y1,x)
点x0,y0と点x1,y1を通るような関数fの、y=f(x)の値を求めます。
例)
y=NSLinear(1,5,3,15,4)
(1,5)と(3,15)を通る直線はy=5xですので、x=4の時の値20がyに代入されます。

使う時に注意しないといけない点は、x0=x1の時、エラーを出してこけること。数値を与える前に自前でチェックを入れなければならない。
最初に思いつく使い方は、STGなんかで敵弾の軌道を計算する時とか。敵が弾を発射した時の座標と、その時点での自機の座標を取得し、敵弾をその線上で動かしていくような。もっとも、これでできる軌道は敵から自機へ一直線に飛ぶだけなんだが。
また、考え方を変えると、目盛の幅が違う物差しAとBを並べて、その間での変換をすることもできるので、拡大縮小などにも使えることに。
たとえば、幅640を想定して立ち絵のx座標を決めていたが、それを幅800に動的に変更する場合、

new_x = NSLinear(0, 0, 640, 800, old_x) -- 0-640 座標を、0-800座標に変換する

で計算できる。
NSDefSpline()&NSSpline()も、結局は同じように扱うことができそう。