/* ----------------------------------------------------------------------------- 2Dベクトル関数 ファイル名 : vec2d.as as.Ver : Flash 5 以降 製作 : Hakuhin (C) 2005/11/19 ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- -------------------------------------- ■ベクトルの型 vec = { x : 0, y : 0 }; -------------------------------------- 2Dベクトルをオブジェクト形式で表現しています。 x が x 方向の成分、 y が y方向の成分です。 -------------------------------------- ■関数一覧 function Vec2dCreate(x, y); // 2Dベクトル作成 function Vec2dClone(vec); // 2Dベクトル複製 function Vec2dAdd(vec1, vec2); // 2Dベクトル加算 function Vec2dSub(vec1, vec2); // 2Dベクトル減算 function Vec2dScale(vec, scale); // 2Dベクトル乗算 function Vec2dDotProduct(vec1, vec2); // 2Dベクトル同士の内積 function Vec2dPerp(vec1, vec2); // 2Dベクトルに垂直な2Dベクトル function Vec2dLength(vec); // 2Dベクトルの長さ function Vec2dNormalize (vec) // 2Dベクトルの正規化 -------------------------------------- ----------------------------------------------------------------------------- */ /* ------------------------------------------------------------------- ベクトル作成 第01引数 x 成分 第02引数 y 成分 返り値 ベクトル(オブジェクト) (使用例) var vec = _root.Vec2dCreate(10,5); ------------------------------------------------------------------- */ function Vec2dCreate(x,y){ return { x : x, y : y }; } /* ------------------------------------------------------------------- ベクトル複製 第01引数 複製したいベクトル 返り値 ベクトル(オブジェクト) (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dClone(vec1); ------------------------------------------------------------------- */ function Vec2dClone(vec){ return { x : vec.x, y : vec.y }; } /* ------------------------------------------------------------------- ベクトル加算 第01引数 1つ目のベクトル 第02引数 2つ目のベクトル 返り値 ベクトル(オブジェクト) (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dCreate(20,-7); var vec3 = _root.Vec2dAdd(vec1,vec2); ------------------------------------------------------------------- */ function Vec2dAdd( vec1, vec2 ){ return { x : vec1.x + vec2.x, y : vec1.y + vec2.y }; } /* ------------------------------------------------------------------- ベクトル減算 第01引数 1つ目のベクトル 第02引数 2つ目のベクトル 返り値 ベクトル(オブジェクト) (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dCreate(20,-7); var vec3 = _root.Vec2dSub(vec1,vec2); ------------------------------------------------------------------- */ function Vec2dSub( vec1, vec2 ){ return { x : vec1.x - vec2.x, y : vec1.y - vec2.y }; } /* ------------------------------------------------------------------- スカラ値で乗算 第01引数 ベクトル 第02引数 倍率 返り値 ベクトル(オブジェクト) (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dScale(vec1,2); ------------------------------------------------------------------- */ function Vec2dScale( vec, scale ){ return { x : vec.x * scale, y : vec.y * scale }; } /* ------------------------------------------------------------------- 内積 第01引数 1つ目のベクトル 第02引数 2つ目のベクトル 返り値 内積 (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dCreate(20,-7); var dot = _root.Vec2dDotProduct(vec1,vec2); ------------------------------------------------------------------- */ function Vec2dDotProduct( vec1, vec2 ){ return (vec1.x * vec2.x) + (vec1.y * vec2.y); } /* ------------------------------------------------------------------- 垂直なベクトル 第01引数 ベクトル 返り値 ベクトル(オブジェクト) (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dPerp(vec1); ------------------------------------------------------------------- */ function Vec2dPerp( vec ){ return { x : -vec.y, y : vec.x }; } /* ------------------------------------------------------------------- ベクトルの長さ 第01引数 長さを調べたいベクトル 返り値 長さ (使用例) var vec1 = _root.Vec2dCreate(10,5); var length = _root.Vec2dLength(vec1); ------------------------------------------------------------------- */ function Vec2dLength( vec ){ return Math.sqrt((vec.x * vec.x) + (vec.y * vec.y)); } /* ------------------------------------------------------------------- ベクトルの正規化 第01引数 正規化したいベクトル 返り値 正規化されたベクトル(オブジェクト) (使用例) var vec1 = _root.Vec2dCreate(10,5); var vec2 = _root.Vec2dNormalize(vec1); ------------------------------------------------------------------- */ function Vec2dNormalize ( vec ){ var length = Math.sqrt((vec.x * vec.x) + (vec.y * vec.y)); if(length > 0) length = 1 / length; return { x : vec.x * length, y : vec.y * length }; }