タグ

Flashと計算に関するmasakuma0812のブックマーク (4)

  • [AS3] 配列のインデックスを式で計算したときはuint型で渡す

    投稿者:野中 文雄 | 投稿日:2011.02.19 | [AS 3][ActionScript][Tips][野中ゼミ] 配列やVectorインスタンスのエレメントを扱うとき、インデックス番号を式で与えることがあります。その場合、配列アクセス演算子[]に式を直接書込むのでなく、uint型に変換(キャスト)するか、式の値はuint型の変数に入れたうえでその変数を渡すようにしましょう。その方が、書く手間は少し増えても、処理が速まります。 [1] 配列アクセス演算子[]にインデックスとして式を直接書込んだとき、その式の値のデータ型は決まっていません。この場合、エレメントの扱いが遅くなるようです。 var my_array:Array = [0, 1, 2]; var i:uint = 0; var element:int = my_array[i + 1]; // 配列アクセス演算子に式を直接

    [AS3] 配列のインデックスを式で計算したときはuint型で渡す
  • [AS3] 3次元回転の軸をベクトルの外積で求める

    投稿者:野中 文雄 | 投稿日:2011.01.22 | [AS 3][ActionScript][Tips][野中ゼミ] 3次元空間のオブジェクトをマウスポインタの位置に応じて回すときの考え方です(図001)。Matrix3Dクラスで座標変換する場合、水平方向と垂直方向それぞれについて回転を加える方法がひとつあります。今回はもうひとつのやり方として、水平・垂直合わせてベクトルの外積により回転軸を求めてみます。 図001■四方に置いた面を上下左右に回す 矩形の画像で四方を囲み、上下左右に回す例は、gihyo.jp連載「ActionScript 3.0で始めるオブジェクト指向スクリプティング」第38回「z座標値に応じて重ね順を変える」で解説しました。Matrix3D.appendRotation()メソッドを用いて、水平と垂直それぞれの回転を加える前者の考え方にしたがっています。このサンプル

    [AS3] 3次元回転の軸をベクトルの外積で求める
  • [AS3] XORマジック

    投稿者:野中 文雄 | 投稿日:2010.12.08 | [AS 3][ActionScript][Tips][野中ゼミ] スクリプト001■ビットごとの排他的論理和演算子^で変数の整数を入替える var a:int = 12345; var b:int = 67890; trace(a, b); // 出力: 12345 67890 a = a ^ b; b = a ^ b; a = a ^ b; trace(a, b); // 出力: 67890 12345 ビットごとの排他的論理和(bitwise exclusive or)演算子^で、ふたつの変数の整数を他の変数は使わずに入替えることができます。 演算子^はふたつの計算対象(オペランド)の整数を2進数で扱い、各桁のどちらか一方のみが1のとき1、そうでないときは0にします。「ビットごと」というのは、繰り上がりや繰り下がりがなく、それぞ

    [AS3] XORマジック
  • [AS3] ループ処理におけるカウンタ変数の減算と加算

    投稿者:野中 文雄 | 投稿日:2010.04.12 | [AS 3][ActionScript][Tips][野中ゼミ] ループ処理では、多くの場合カウンタ変数を使います。その値は、加算するより減算する方が速いと噂されています。 出所は、Adobeのサイトに公開された「Optimizing Performance for the Flash Platform」の「Miscellaneous optimizations」です。「whileループでは逆順を使うように」("Use reverse order for while loops")とあり、つぎのようなスクリプトが示されています。 var i:int = myArray.length; while (--i > -1) { } 割り算よりも掛け算の方が速いとはいわれます。けれども、足し算と引き算で差があるという話は聞いたことがありませ

    [AS3] ループ処理におけるカウンタ変数の減算と加算
  • 1