2011年1月6日木曜日

MatrixのtransformPointの最適化

Twitterの方にもつぶやいたのですが、MatrixのtransformPointは、Matrixの各要素を元に直接求められることに気づいたのでメモ。
var m:Matrix = ...;
var x:Number = ...;
var y:Number = ...;
x = x * m.a + y * m.c + m.tx;
y = x * m.b + y * m.d + m.ty;
通常だと入力用にPointのインスタンスを作る必要がありますが、最適化としてPointを使い回すというやりかたもあります。でも戻り値が新しいPointクラスなので、使用メモリが増えるし、生成コストが馬鹿になりません。
この方法ならa/b/c/d/tx/tyを使い回せば、大量に座標変換しても高速に計算できます。

0 件のコメント:

コメントを投稿