« KeyboardEvent | メイン | Flashのバージョン7 で flash.geom パッケージを使う »

2008年1月 9日

[as2] Matrix の値から拡大縮小、回転の値を取る

Matrix の値から拡大縮小、回転、位置の値を取る計算式。
import flash.geom.Matrix;
var mat:Matrix = new Matrix();
mat.createBox( 12 , 36 , Math.PI/4 , 10, 50 );
trace( mat );
trace( getParam( mat ) );

function getParam( m:Matrix ):Object
{
  var totalScale:Number = m.a * m.d - m.b * m.c;
  var sx:Number = Math.sqrt(m.a * m.a + m.c * m.c);
  var sy:Number = totalScale / sx;
  var angle:Number = Math.acos( m.a / sx );
  var obj = { scaleX:sx , scaleY:sy, rotation:angle, x:m.tx, y:m.ty };
  obj.toString = function()
  {
    return "(scaleX="+this.scaleX+" , scaleY="+this.scaleY+
			 ", rotation="+this.rotation+", x="+this.x+", y="+this.y+")";
  }
  return obj;
}

投稿者 michi : 2008年1月 9日 18:48

« KeyboardEvent | メイン | Flashのバージョン7 で flash.geom パッケージを使う »

トラックバック

このエントリーのトラックバックURL:
http://system.seyself.com/mt-tb.cgi/223

コメント

コメントしてください




保存しますか?