package { public class Math2 { public function Math2() { } /** * 渡された数値が、指定された桁数に満たない場合、数値の先頭に"0"を付けて桁数を揃えます。 * 引数に渡す値はどちらも整数値であり、正数でなければ正しい値は得られません。 * * @param n : Number - 成形元となる整数値 * @param leng : Number - 桁数 * @return String - 成形された数値 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.figure( 32 , 4 ) ); // 出力 : 0032 * </code> */ public static function figure(n:Number,leng:Number):String { var _n=n + ""; if (_n.length < leng) { return "" + String(Math.pow(10,leng - _n.length)).substr(1,leng - _n.length) + _n; } return _n.substr(_n.length - leng,leng); } /** * +1か-1をランダムで返します * * @return Number - 1 もしくは -1 を返します * @usage <code> * import com.seyself.math.Math2; * trace( Math2.random() ); // 出力 : -1 * </code> */ public static function random():Number { return Math.random() < 0.5?-1:1; } /** * 最小値以上、最大値以下の値を返します。 * 指定した数値が最小値を下回る場合は最小値が返され、最大値より大きい場合は最大値を返します。 * 数値が最小値以上、最大値以下の場合は、数値がそのまま返されます。 * * @param param : Number - 数値 * @param min : Number - 最小値 * @param max : Number - 最大値 * @return Number - 最小値と最大値の間で該当する値を返します * @usage <code> * import com.seyself.math.Math2; * trace( Math2.relation( 256 , 0 , 100 ) ); // 出力 : 100 * </code> */ public static function relation(param:Number,min:Number,max:Number) { return Math.max(Math.min(param,max),min); } /** * 渡された引数の合計値を返します。 * 配列を使用する場合はapplyを使用してください。 * * @param arguments : Number - 数値 * @return Number - 引数の合計値 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.sum( 6, 10, 200, 40 ) ); // 出力 : 256 * </code> */ public static function sum(...arguments):Number { var a=0; for (var i=0; i < arguments.length; i++) { a+= arguments[i]; } return a; } /** * 渡された引数の平均値を返します。 * 配列を使用する場合はapplyを使用してください。 * * @param arguments : Number - 数値 * @return Number - 引数の平均値 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.average( 6, 10, 200, 40 ) ); // 出力 : 64 * </code> */ public static function average(...arguments):Number { return Math2.sum.apply(null,arguments) / arguments.length; } /** * 渡された正数の値から正と負の値を交互に変換した値を返します。 * * @param n : Number - 正数の値 * @return Number - 引数が奇数なら負数、偶数なら正数が返ります * @usage <code> * import com.seyself.math.Math2; * for(var i=0;i<6;i++) trace( i+" => "+Math2.xcount( i ) ); * * 出力 --------- * 0 => 0 * 1 => 1 * 2 => -1 * 3 => 2 * 4 => -2 * 5 => 3 * </code> */ public static function xcount(n:Number):Number { var a=Math.floor(n / 2); if (n % 2 > 0) { a=- a + 1; } a*= -1; return a; } /** * 小数点以下 指定桁で四捨五入します。 * * @param param : Number - 数値 * @param leng : Number - 小数点以下の桁数 * @return Number - 小数点以下 指定桁で四捨五入した値 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.round( Math.PI , 3 ) ); // 出力 : 3.142 * </code> */ public static function round(param:Number,leng:Number):Number { var _mgn=1; for (var i=0; i < leng; i++) { _mgn*= 10; } return Math.round(param * _mgn) / _mgn; } /** * 小数点以下 指定桁数で切り捨てた値を返します。 * * @param param : Number - 数値 * @param leng : Number - 小数点以下の桁数 * @return Number - 数点以下 指定桁数で切り捨てた値 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.floor( Math.PI , 3 ) ); // 出力 : 3.141 * </code> */ public static function floor(param:Number,leng:Number):Number { var _mgn=1; for (var i=0; i < leng; i++) { _mgn*= 10; } return Math.floor(param * _mgn) / _mgn; } /** * 0 から指定した最大値未満の値を返します。 * 値が最大値を上回る場合は、上回った分 0 からカウントします。 * 値が 0 より下回る場合も、同様に最大値からカウントします。 * * @param param : Number - 数値 * @param max : Number - 最大値 * @return Number - 0 から最大値未満までの値 * @usage <code> * import com.seyself.math.Math2; * for(var i=1;i<85;i*=3) trace( i+" => "+Math2.loop( i , 7 ) ); * * 出力 --------- * 1 => 1 * 3 => 3 * 9 => 2 * 27 => 6 * 81 => 4 * </code> */ public static function loop(param:Number,max:Number):Number { if (param < 0) { return max + param % max % max; } else if (param >= max) { return param % max; } else { return param; } /** * 引数の値が正数の場合のみ、その数値を返し、負数の場合は0を返します。 * * @param n : Number - 数値 * @return Number - 正数(0以上の数値) * @usage <code> * import com.seyself.math.Math2; * trace( Math2.positive( 20 ) ); // 出力 : 20 * trace( Math2.positive( -20 ) ); // 出力 : 0 * </code> */ } public static function positive(n:Number):Number { if (n > 0) { return n; } return 0; } /** * 引数の値が負数の場合のみ数値を返し、正数の場合は0を返します。 * * @param n : Number - 数値 * @return Number - 負数(0以下の数値) * @usage <code> * import com.seyself.math.Math2; * trace( Math2.negative( 20 ) ); // 出力 : 0 * trace( Math2.negative( -20 ) ); // 出力 : -20 * </code> */ public static function negative(n:Number):Number { if (n < 0) { return n; } return 0; } /** * 引数が正数の場合は+1を、負数の場合は-1、その他の場合は0を返します。 * * @param n : Number - 数値 * @return Number - 1 もしくは -1 、0 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.filter( 5 ) ); // 出力 : 1 * trace( Math2.filter( -5 ) ); // 出力 : -1 * trace( Math2.filter( 0 ) ); // 出力 : 0 * </code> */ public static function filter(n:Number):Number { if (n > 0) { return 1; } if (n < 0) { return -1; } return 0; } /** * 引数から約数を求めて配列で返します。 * * @param n : Number - 数値 * @return Array - 約数の配列 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.measure( 30 ) ); // 出力 : 1,2,3,5,6,10,15,30 * </code> */ public static function measure(param:Number):Array { var m=param; var res=[1,param]; var maxcount=Math.floor(Math.sqrt(m) + 1); for (var i=2; i < maxcount; i++) { if (param % i == 0) { var s=0; var e=0; for (var k=0; k < res.length; k++) { if (res[k] == i) { s++; } if (res[k] == param / i) { e++; } } if (s == 0) { res.push(i); } if (param / i != i && e == 0) { res.push(param / i); } } } return res.sort(Array.NUMERIC); } /** * 素数の一覧を取得します。 * 取得できる素数は 2 から 9973 までの 1229 個の数値です。 * 引数 param が無い場合は配列で全ての素数を返します。 * * @param param : Number - 何番目の素数を取得するかを指定する数値 * @return Number or Array - 指定した位置の素数、もしくは素数の配列 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.prime( 24 ) ); // 出力 : 97 * </code> */ //public static function prime( param:Number ) //{ //var _prime:Array = PrimeNumber.getMembers(); //if(param==undefined) return _prime; //return _prime[param]; //} /** * 渡されたラジアン値を角度に変換します。 * * @param param : Number - ラジアン * @return Number - 角度 * @usage <code> * import com.seyself.math.Math2; * trace( Math2.toDeg( Math.PI/2 ) ); // 出力 : 90 * </code> */ public static function toDeg(rad:Number):Number { return rad / Math.PI * 180; } /** * 渡された角度をラジアン値に変換します。 * * @param param : Number - 角度 * @return Number - ラジアン * @usage <code> * import com.seyself.math.Math2; * trace( Math2.toRad( 45 ) ); // 出力 : 0.785398163397448 * </code> */ public static function toRad(deg:Number):Number { return deg / 180 * Math.PI; } } }
Math类的扩展~~~在日本的火星项目的一个项目里面拿出来的,扩展成Math2类,这个类里面包含常见的角度转换,random值范围的取值,平均值,和,下限 四舍五入等的数据进行了改造。
说不定日后adobe会添加进去,对这些功能来讲。有一些会常用的
至于使用说明,类里面已经有的