チェンジセット 3388
- コミット日時:
- 2010/02/03 22:33:17 (3 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/FLARToolKit/trunk/libs/NyARToolKitAS3/src/jp/nyatla/nyartoolkit/as3/core/utils/NyAREquationSolver.as
r3322 r3388 111 111 if ((tmp = q * q - p * p * p) == 0) { 112 112 // 重根 113 q = cuberoot(q);113 q = NyARMath.cubeRoot(q); 114 114 o_result[0] = 2 * q - b; 115 115 o_result[1] = -q - b; … … 117 117 } else if (tmp > 0) { 118 118 // 実根1,虚根2 119 var a3:Number = cuberoot(q + ((q > 0) ? 1 : -1) * Math.sqrt(tmp));119 var a3:Number = NyARMath.cubeRoot(q + ((q > 0) ? 1 : -1) * Math.sqrt(tmp)); 120 120 var b3:Number = p / a3; 121 121 o_result[0] = a3 + b3 - b; … … 260 260 } 261 261 } 262 /** 263 * 3乗根を求められないシステムで、3乗根を求めます。 264 * http://aoki2.si.gunma-u.ac.jp/JavaScript/src/3jisiki.html 265 * @param i_in 266 * @return 267 */ 268 private static function cuberoot(i_in:Number):Number 269 { 270 var res:Number = Math.pow(Math.abs(i_in), 1.0 / 3.0); 271 return (i_in >= 0) ? res : -res; 272 } 262 273 263 /** 274 264 * 3次方程式の実根を1個だけ求める。 … … 288 278 if ((tmp = q * q - p * p * p) == 0) { 289 279 // 重根 290 q = cuberoot(q);280 q = NyARMath.cubeRoot(q); 291 281 return 2 * q - b; 292 282 } else if (tmp > 0) { 293 283 // 実根1,虚根2 294 var a3:Number = cuberoot(q + ((q > 0) ? 1 : -1) * Math.sqrt(tmp));284 var a3:Number = NyARMath.cubeRoot(q + ((q > 0) ? 1 : -1) * Math.sqrt(tmp)); 295 285 var b3:Number = p / a3; 296 286 return a3 + b3 - b; as3/FLARToolKit/trunk/libs/NyARToolKitAS3/src/jp/nyatla/nyartoolkit/as3/core/utils/NyARMath.as
r3322 r3388 31 31 package jp.nyatla.nyartoolkit.as3.core.utils 32 32 { 33 import jp.nyatla.nyartoolkit.as3.core.types.*; 33 34 public class NyARMath 34 35 { … … 39 40 * @return 40 41 */ 41 public static f inal function sqNorm(i_p1:NyARDoublePoint2d,i_p2:NyARDoublePoint2d ):Number42 public static function sqNorm_NyARDoublePoint2d(i_p1:NyARDoublePoint2d,i_p2:NyARDoublePoint2d ):Number 42 43 { 43 var x ,y:Number;44 var x:Number,y:Number; 44 45 x=i_p2.x-i_p1.x; 45 46 y=i_p2.y-i_p1.y; 46 47 return x*x+y*y; 47 48 } 48 public static function sqNorm (i_p1x:Number,i_p1y:Number,i_p2x:Number,i_p2y:Number):Number49 public static function sqNorm_Number(i_p1x:Number,i_p1y:Number,i_p2x:Number,i_p2y:Number):Number 49 50 { 50 var x ,y:Number;51 var x:Number,y:Number; 51 52 x=i_p2x-i_p1x; 52 53 y=i_p2y-i_p1y; … … 59 60 * @return 60 61 */ 61 public static f inal function sqNorm(i_p1:NyARDoublePoint3d,i_p2:NyARDoublePoint3d):Number62 public static function sqNorm_NyARDoublePoint3d(i_p1:NyARDoublePoint3d,i_p2:NyARDoublePoint3d):Number 62 63 { 63 var x , y, z:Number;64 var x:Number, y:Number, z:Number; 64 65 x=i_p2.x-i_p1.x; 65 66 y=i_p2.y-i_p1.y; … … 67 68 return x*x+y*y+z*z; 68 69 } 69 70 /** 71 * 3乗根を求められないシステムで、3乗根を求めます。 72 * http://aoki2.si.gunma-u.ac.jp/JavaScript/src/3jisiki.html 73 * @param i_in 74 * @return 75 */ 76 public static function cubeRoot(i_in:Number):Number 77 { 78 var res:Number = Math.pow(Math.abs(i_in), 1.0 / 3.0); 79 return (i_in >= 0) ? res : -res; 80 } 70 81 71 82 }

