チェンジセット 397

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

--

ファイル:

凡例:

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

    r342 r397  
    1 /* 
     1/* 
    22 * Copyright(c) 2006-2007 the Spark project. 
    33 * 
     
    353353         * @param       compareTarget 比較対象の配列 
    354354         * @return  新たしい配列を返します 
    355          * @author  michi@seyself.com 
     355         * @author  michi at seyself.com 
    356356         */ 
    357357        public static function matches(array:Array, compareTarget:Array):Array 
  • as3/Utils/src/org/libspark/utils/MathUtil.as

    r135 r397  
    107107                        return ( Math.random() < 0.5 ) ? 1 : -1;  
    108108                } 
     109         
     110         
     111        /** 
     112        * 引数の値が正数の場合のみ、その数値を返し、負数の場合は0を返します. 
     113        *  
     114        * @param n      数値 
     115        * @return       正数(0以上の数値) 
     116        * @author   michi at seyself.com 
     117        */ 
     118        public static function positive( n:Number ):Number 
     119        { 
     120            if(n>0) return n; 
     121            return 0; 
     122        } 
     123         
     124        /** 
     125        * 引数の値が負数の場合のみ数値を返し、正数の場合は0を返します. 
     126        *  
     127        * @param n      数値 
     128        * @return       負数(0以下の数値) 
     129        * @author   michi at seyself.com 
     130        */ 
     131        public static function negative( n:Number ):Number 
     132        { 
     133            if(n<0) return n; 
     134            return 0; 
     135        } 
     136         
     137        /** 
     138        * 引数が正数の場合は+1を、負数の場合は-1、その他の場合は0を返します. 
     139        *  
     140        * @param n      数値 
     141        * @return       1 もしくは -1 、0 
     142        * @author   michi at seyself.com 
     143        */ 
     144        public static function judgment( n:Number ):Number 
     145        { 
     146            if(n>0) return 1; 
     147            if(n<0) return -1; 
     148            return 0; 
     149        } 
     150         
     151        /** 
     152        * 引数から約数を求めて配列で返します. 
     153        *  
     154        * @param n      数値 
     155        * @return       約数の配列 
     156        * @author   michi at seyself.com 
     157        */ 
     158        public static function measure( param:Number ):Array 
     159        { 
     160            var m = param; 
     161            var res = [1,param]; 
     162            var maxcount = Math.floor(Math.sqrt(m)+1); 
     163            for(var i=2;i<maxcount ;i++){ 
     164                if(param%i==0){ 
     165                    var s = 0; 
     166                    var e = 0; 
     167                    for(var k=0;k<res.length;k++){ 
     168                        if( res[k] ==i ) s++; 
     169                        if( res[k] ==param/i ) e++; 
     170                    } 
     171                    if(s==0) res.push(i); 
     172                    if(param/i!=i && e==0) res.push(param/i); 
     173                } 
     174            } 
     175            return res.sort( Array.NUMERIC ); 
     176        } 
     177         
     178        /** 
     179        * 小数点以下 指定桁で四捨五入します. 
     180        *  
     181        * @param param  数値 
     182        * @param len    小数点以下の桁数 
     183        * @return       小数点以下 指定桁で四捨五入した値 
     184        * @author   michi at seyself.com 
     185        */ 
     186        public static function round( param:Number , len:uint ):Number 
     187        { 
     188            var _mgn = 1; 
     189            for(var i=0;i<len;i++) _mgn*=10; 
     190            return Math.round(param*_mgn)/_mgn; 
     191        } 
     192         
     193        /** 
     194        * 小数点以下 指定桁数で切り捨てた値を返します. 
     195        *  
     196        * @param param  数値 
     197        * @param len    小数点以下の桁数 
     198        * @return       数点以下 指定桁数で切り捨てた値 
     199        * @author   michi at seyself.com 
     200        */ 
     201        public static function floor( param:Number , len:uint ):Number 
     202        { 
     203            var _mgn = 1; 
     204            for(var i=0;i<len;i++) _mgn*=10; 
     205            return Math.floor(param*_mgn)/_mgn; 
     206        } 
     207         
     208        /** 
     209        * 指定された数値の立方根を計算して返します。 
     210        * @param        x       立方根を求めたい数値 
     211        * @return       x の立方根 
     212        * @author   michi at seyself.com 
     213        */ 
     214        public static function cuberoot( x:Number ):Number 
     215        { 
     216            var s:Number, t:Number, prev:Number; 
     217            var posi:int; 
     218            if(x==0) return 0; 
     219            if(x>0) posi=1; else { posi=0; x= -x; } 
     220            if(x>1) s=x; else s=1; 
     221            do{ 
     222                prev=s; t=s*s; s+=(x-t*s)/(2*t+x/s); 
     223            } while(s<prev); 
     224            if( posi ) return prev; 
     225            else return -prev; 
     226        } 
     227         
     228        /** 
     229        * 渡された正数の値から正と負の値を交互に変換した値を返します. 
     230        *  
     231        * @param n      正数の値 
     232        * @return       引数が奇数なら負数、偶数なら正数が返ります 
     233        * @author   michi at seyself.com 
     234        */ 
     235        public static function xcount( i:uint ):Number 
     236        { 
     237            var a = Math.floor(i/2); 
     238            if(i%2>0) a = -(a+1); 
     239            a *= -1; 
     240            return a; 
     241        } 
     242         
     243        /** 
     244        * 渡された引数の合計値を返します. 
     245        * 配列を使用する場合はapplyを使用してください. 
     246        *  
     247        * @param ...numbers     数値 
     248        * @return       引数の合計値 
     249        * @author   michi at seyself.com 
     250        */ 
     251        public static function sum( ...numbers ):Number 
     252        { 
     253            var a:Number = 0; 
     254            var leng:uint = numbers.length; 
     255            for(var i:uint=0;i<leng;i++) a+=numbers[i]; 
     256            return a; 
     257        } 
     258         
     259        /** 
     260        * 渡された引数の平均値を返します. 
     261        * 配列を使用する場合はapplyを使用してください. 
     262        *  
     263        * @param ...numbers 数値 
     264        * @return       引数の平均値 
     265        * @author   michi at seyself.com 
     266        */ 
     267        public static function average( ...numbers ):Number 
     268        { 
     269            return sum.apply(null,numbers)/numbers.length; 
     270        } 
     271         
     272        /** 
     273         * -1.0 から 1.0 の間の乱数を生成します. 
     274         *  
     275         * @return  乱数 
     276         * @author  michi at seyself.com 
     277         */ 
     278        public static function random():Number 
     279        { 
     280            return Math.random() * 2 - 1; 
     281        } 
     282         
     283        /** 
     284         * -1.0 から 1.0 の間の偏向乱数を生成します. 
     285         *  
     286         * @param       interation  数値が多いほど乱数値は0に近づきます 
     287         * @return  乱数 
     288         * @author  michi at seyself.com 
     289         */ 
     290        public static function biasedRandom(interation:uint = 2):Number 
     291        { 
     292            var n:Number = 0; 
     293            for (var i:int = 0; i < interation; i++ ) n += random(); 
     294            return n / interation; 
     295        } 
     296         
     297        /** 
     298         * 0.0 から 1.0 の間の疑似乱数を生成します.Perlin ノイズとはまったく関係ないです。 
     299         * (注: あまり極端な値を設定すると正しく動作しないかもしれません。) 
     300         *  
     301         * @param       i インデックス値 
     302         * @param       seed 乱数の定義値 
     303         * @return  数値 
     304         * @author  michi at seyself.com 
     305         */ 
     306        public static function function noise( i:uint, seed:Number=0.0 ):Number 
     307        { 
     308            seed %= 0xFFF; 
     309            i %= 0x7FF; 
     310            var P:Number  = 3.14159265358979 * ( seed + 0.5 ); 
     311            var t:Number  = 173*i*i*i+13577 % 3568927; 
     312            var r:Number  = (i*2.71828182845905+t)*P%1; 
     313            return r; 
     314        } 
     315         
     316        /** 
     317        * 渡されたラジアン値を角度に変換します. 
     318        *  
     319        * @param param  ラジアン 
     320        * @return       角度 
     321        * @author   michi at seyself.com 
     322        */ 
     323        public static function degree( radian:Number ):Number 
     324        { 
     325            return radian / Math.PI * 180; 
     326        } 
     327         
     328        /** 
     329        * 渡された角度をラジアン値に変換します. 
     330        *  
     331        * @param param  角度 
     332        * @return       ラジアン 
     333        * @author   michi at seyself.com 
     334        */ 
     335        public static function radian( degree:Number ):Number 
     336        { 
     337            return degree / 180 * Math.PI; 
     338        } 
     339         
     340        /** 
     341         * 2つの角( angle1 から angle2 )の内角の値を調べます 
     342         *  
     343         * @param       angle1 角度 (ラジアン単位)  
     344         * @param       angle2 角度 (ラジアン単位)  
     345         * @return  2つの角度の内角距離 
     346         * @author  michi at seyself.com 
     347         */ 
     348        public static function interiorAngle(angle1:Number, angle2:Number):Number 
     349        { 
     350            var a:Number = angle2 - angle1; 
     351            return Math.atan2(Math.sin(a), Math.cos(a)); 
     352        } 
     353         
     354         
     355         
    109356        } 
    110357}