チェンジセット 404

差分発生行の前後
無視リスト:
コミット日時:
2008/05/16 18:30:19 (4 年前)
コミッタ:
michi
ログメッセージ:

--

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/Utils/src/org/libspark/utils/GeomUtil.as

    r403 r404  
    2424    import flash.geom.Point; 
    2525    import flash.geom.Rectangle; 
     26    import flash.geom.ColorTransform; 
    2627    import flash.geom.Transform; 
    2728     
     
    212213         * @author  michi at seyself.com 
    213214         */ 
    214         public static function getRotationFromMatrix(mt:Matrix):Number 
     215        public static function getRotateFromMatrix(mt:Matrix):Number 
    215216        { 
    216217            var sx:Number = Math.sqrt(mt.a * mt.a + mt.b * mt.b); 
     
    245246        { 
    246247            return new Point(mt.tx, mt.ty); 
     248        } 
     249         
     250        /** 
     251         * 指定のマトリックスオブジェクトから Matrix.createBox の逆算を行います。 
     252         * getRotateFromMatrix や getScaleFromMatrix で得られる結果とは異なりますので注意してください。 
     253         *  
     254         * @param       mt 対象となるマトリックスオブジェクト 
     255         * @return  scaleX, scaleY, rotation, x, y のプロパティを持つオブジェクト 
     256         * 得られた結果オブジェクトは toString() で内容を確認用の文字列に変換します。 
     257         */ 
     258        public static function degradeBox(mt:Matrix):Object 
     259        { 
     260            var t:Number = mt.a * mt.d - mt.b * mt.c; 
     261            var sx:Number = Math.sqrt(mt.a * mt.a + mt.c * mt.c); 
     262            var sy:Number = t / sx; 
     263            var angle:Number = Math.acos( mt.a / sx ); 
     264            var obj = { scaleX:sx , scaleY:sy, rotation:angle, x:mt.tx, y:mt.ty }; 
     265            obj.toString = function():String { 
     266                return "(scaleX="+this.scaleX+" , scaleY="+this.scaleY+ 
     267                     ", rotation="+this.rotation+", x="+this.x+", y="+this.y+")"; 
     268            } 
     269            return obj; 
    247270        } 
    248271         
     
    311334             
    312335            if(target is Matrix) { 
    313                 var sx:Number = Math.sqrt(target.a * target.a + target.b * target.b); 
    314                 var sy:Number = Math.sqrt(target.c * target.c + target.d * target.d); 
    315                 var angle:Number = Math.acos( target.a / sx ); 
    316                 if (target.b < 0) angle *= -1; 
    317                 var tx:Number = target.tx; 
    318                 var ty:Number = target.ty; 
    319                 return "(scaleX=" + sx + " , scaleY=" + sy +  
    320                     ", rotation=" + angle + ", x=" + tx + ", y=" + ty + ")"; 
     336                return degradeBox(target).toString(); 
    321337            } 
    322338