FLASH Tips No.1
FLASHで関数計算 Vol-3 by T.Yamazoe
FLASHのスクリプトに無い一般的な関数計算スクリプトを作ってみました。
動作バージョン情報:FLASH Player Ver4 以上
FLA生ファイル(Winで作成) calc.fla(177KB)
ZIP圧縮(fla,swf,htm) calc.zip(43KB)
FLASH4でサポートされていない算術関数のサブルーチン集で下記の種類が有ります。
逆数、べき乗、階乗、平方根、累乗根、常用対数、自然対数、自然対数の底(e)のべき乗、
三角関数(sin、cos、tan、cosec、sec、cot)、逆三角関数(arcsin、arccos、arctan)、
双曲線関数(sinh、cosh、tanh)、円周率(π)の近似値、ヘロンの公式(三角形の面積)
各関数の算出アルゴリズムは、平方根がニュートン法、三角関数、双曲線関数などは
Taylor展開及び関数の変換公式を利用しています。
算出精度は12~14桁ですが、特にLog、Ln、及び累乗根に関しては、
計算する数値が大きくなれば誤差が大きくなるので注意が必要です。
SIN、COSは比較的精度良く求められます。
逆三角関数は値によって誤差の大きさが変化します。
FLASHでの有効桁数は15桁迄のようでそれ以上は指数形式になり、
最大 1.7976931348623? x E308 あたりが限界のようです。
関数によっては非常に時間のかかる物も有ります。アニメーション的な物に利用する場合、
速度的に不適当な場合があるので御理解下さい。
【 サンプル内ルーチンの処理の流れ 】
サンプルの各ルーチンはXとn又はA,B,Cをテキストフィールドから読み込み、
計算ボタンにあるスクリプトから各関数をコールしています。
そして結果をAnsテキストフィールドに表示しています。
各関数エンジン部はムービークリップ「math」に集約し、シーンからコールしています。
それぞれを個別に使用できますが、下記関数はそれぞれのルーチンをコールしているので、
関数別に利用する際は関連するルーチンがなくてはなりません。
log → 「ln」
sqrt2 → 「ln」「ex」
heron → 「sqrt」
tan → 「sin」「cos」
sec → 「cos」
cosec → 「sin」
cot → 「tan」
sinh → 「ex」
cosh → 「ex」
tanh → 「ex」
arcsin → 「sqrt」「arctan」
arccos → 「sqrt」「arctan」
双曲線関数などループ回数の多いものは計算に時間がかかります。
各アクションのループ回数は誤差の程度を確認しながら調整すれば、
速度的には改善されると思います。
調整可能なループ回数設定場所は各アクションのコメントをご覧下さい。
【 関数ルーチンの利用法 】
まずライブラリから使用するシーンにムービークリップ「math」を貼り付けます。
その時、ムービーサイズよりも外に配置すれば不要な文字「Math_action」は見えません。
その後、貼り付けた「math」オブジェクトのインスタンスを「math」とします。
以上で関数を呼び出すことが出来るようになります。
コールの仕方は下記を参照して下さい。
コールの方法と変数
各関数をコールするには、
Set Variable:"/math:引数" =入力値
Call ("/math:CALLラベル")
Set Variable:"結果格納変数" =/math:出力変数
の様に記述します。
引数が複数必要な場合は下記の様にします。
Set Variable:"/math:引数1" =入力値1
Set Variable:"/math:引数2" =入力値2
例として、 三角関数SINを求める時、角度(度)を変数Aに入れ、結果を ans という変数に格納する場合、
Set Variable:"A" =30
Set Variable:"/math:x" =A*3.14159265358979/180
Call ("/math:sin")
Set Variable:"ans" =/math:sin
上記の2行目は「度」を「ラジアン」に直すための予備計算です。
各三角関数などは関数処理をラジアンで行っているので、「度」を
使用するときは、必ず「ラジアン」に変換して下さい。
逆の「ラジアン」→「度」の変換式は、
ラジアン*180/3.14159265358979 です。
また、シーンから呼び出すときは上記パス(/math:)ですが、他のムービークリップや違う階層から
コールするときはパスに注意して下さい。
【 各関数の引数、変数一覧表 】
以下に各関数とそれぞれの変数一覧表を表示します。
注:引数又は、出力変数でバックが黄色のところは数値単位がラジアンです。
関数名 | 引数1 | 引数2 | 引数3 | CALLラベル | 出力変数 | 参照ルーチン |
---|---|---|---|---|---|---|
1/x | x | bx | bx | |||
xn | x | n | xn | xn | ||
X! | x | xk | xk | |||
ex | x | ex | ex | |||
平方根 | x | sqrt | sqrt | |||
累乗根 | x | n | sqrt2 | sqrt2 | ln,ex | |
Ln() | x | ln | ln | |||
Log10() | x | log | log | ln | ||
sin() | x | sin | sin | |||
cos() | x | cos | cos | |||
tan() | x | tan | tan | sin,cos | ||
sec() | x | sec | sec | cos | ||
cosec() | x | cosec | cosec | sin | ||
cot() | x | cot | cot | tan | ||
sinh() | x | sinh | sinh | ex | ||
cosh() | x | cosh | cosh | ex | ||
tanh() | x | tanh | tanh | ex | ||
arcsin() | x | arcsin | arcsin | sqrt,arctan | ||
arccos() | x | arccos | arccos | sqrt,arctan | ||
arctan() | x | arctan | arctan | |||
π | pai | pai | ||||
Heron | a | b | c | heron | heron | sqrt |
【 各関数の参考公式 】
Copyright©1998-2022 Hiyoko3 & JR6BIJ All rights reserved