もっと低コストなMath.sin

Math.sin()を毎回計算するよりも、
あらかじめ変換テーブルを作っておいて、近似値を参照する方が、
精度はちょっと劣りつつも、早ささの面で使えるかもしれない。

ブラシュアップ。
index値の求め方を変更した_a1bを追加。
len/(Math.PI*2)を定数としてあらかじめ計算しておく。
(ran[i]%PI2)*LENdivPI2 & len2


もっとブラシュアップ
index値の求め方を変更した_a1cを追加。
ran[i]*LENdivPI2 & len2

「ran[i]*LENdivPI2」の値が、計算範囲内であることを前提のブラシュアップ
超えるようであれば、(ran[i]%PI2)をする。


クラス化してみた。


＝＝＝＝以下結果例＝＝＝＝
◆Math.sin()を計算するより、変換テーブルを作って参照した方が精度は劣るが早い。

Sin(0)〜Sin(2*Math.PI)を65536段階で、sinTable:Vector.<Number>に入れる。

変換テーブルの作成時間：60
_a0：183：普通にMath.sinで計算。
_a1c：28：sinTableを参照もっとブラシュアップ版
_a2c：113：sinTableの参照もっとブラシュアップ版を関数化
_a2d：116：sinTableの参照もっとブラシュアップ版をクラス化
_a99：92：対照用に0を返すだけの関数


試しに20個、Math.sinとsinTableで求めた値との比較をする。
0.000011295614069428694
0.000018468081231148327
-0.000048742107041879756
0.00006136495014702481
-0.000005346027467822978
0.00008947552124638491
-0.00003862500423407189
-0.000013733251637670918
-0.00005233214434591238
-0.000009970360831168534
-0.00005403697863781698
0.000026028611143202873
0.000004722851165483988
-0.0000010851409804057965
0.000