2Dベクトルの関数を作ろう
・ | 2Dベクトルを作成する |
・ | 2Dベクトルを加算する |
・ | 2Dベクトルを減算する |
・ | 2Dベクトルを乗算する |
・ | 2Dベクトルの長さを求める |
・ | 2Dベクトル同士の内積を求める |
・ | 垂直な2Dベクトルを求める |
・ | 2Dベクトルを正規化する |
・ | ソースをダウンロード |
2Dベクトルを作成する
■2Dベクトルの演算について
Flash 8 以降であれば、Point クラスを利用すると、2Dのベクトルの演算を行うことができます。
このページでは、Flash 7 以前を利用している方や、他言語を使われる方や、自前で演算したい人向けにソースコードを公開しています。
2Dベクトルの実践での使い方については、こちらで解説しています。
■ベクトルの型
Point 型と同じプロパティになるように、オブジェクト型で表現しています。
x が「x 軸の成分」
y が「y 軸の成分」
となります。
ベクトルの型
var vec = {
x : 0,
y : 0
};
■ベクトルを作成する
2Dベクトルのオブジェクトを作成する関数です。
第01引数に x 軸成分を指定します。
第02引数に y 軸成分を指定します。
戻り値から新規のオブジェクトが得られます。
ベクトルの型
function Vec2dCreate(x,y){
return {
x : x,
y : y
};
}
使用例です。
2Dベクトル(10,5)を作成する
var vec = Vec2dCreate(10,5);
■プロパティにアクセスする
オブジェクトから、直接プロパティにアクセスする事もできます。
ベクトルのプロパティにアクセスする
var vec = Vec2dCreate(0,0);
vec.x = 10;
vec.y = 5;
trace("x:" + vec.x + " y:" + vec.y);
2Dベクトル同士を加算する
■2Dベクトルと2Dベクトルの加算
2Dベクトルと2Dベクトルを加算して新しい2Dベクトルを得る関数です。
第01引数に 1つ目のオブジェクトを指定します。
第02引数に 2つ目のオブジェクトを指定します。
戻り値から新規のオブジェクトが得られます。
ベクトル同士の加算
function Vec2dAdd( vec1, vec2 ){
return {
x : vec1.x + vec2.x,
y : vec1.y + vec2.y
};
}
使用例です。
2Dベクトル(10,5)と2Dベクトル(20,-7)を加算する
var vec1 = Vec2dCreate(10,5); // 1つ目のベクトルを作成する
var vec2 = Vec2dCreate(20,-7); // 2つ目のベクトルを作成する
var vec3 = Vec2dAdd(vec1,vec2); // 2つのベクトルを加算して新しいベクトルを得る
2Dベクトル同士を減算する
■2Dベクトルから2Dベクトルを減算
2Dベクトルから2Dベクトルを減算して新しい2Dベクトルを得る関数です。
引数に渡す順序を間違えると結果が変わるので注意します。
第01引数に 1つ目のオブジェクトを指定します。
第02引数に 2つ目のオブジェクトを指定します。
戻り値から新規のオブジェクトが得られます。
2Dベクトルから2Dベクトルを減算
function Vec2dSub( vec1, vec2 ){
return {
x : vec1.x - vec2.x,
y : vec1.y - vec2.y
};
}
使用例です。
2Dベクトル(10,5) を 2 倍する
var vec1 = Vec2dCreate(10,5); // 1つ目のベクトルを作成する
var vec2 = Vec2dCreate(20,-7); // 2つ目のベクトルを作成する
var vec3 = Vec2dSub(vec1,vec2); // 1つ目のベクトルから2つ目のベクトルを減算して新しいベクトルを得る
2Dベクトルを乗算する
■2Dベクトルを任意の値で乗算する
2Dベクトルに、値を掛けて新しい2Dベクトルを得る関数です。
第01引数に ベクトルのオブジェクトを指定します。
第02引数に 乗算したい値を指定します。
戻り値から新規のオブジェクトが得られます。
2Dベクトルに任意の値を乗算
function Vec2dScale( vec, scale ){
return {
x : vec.x * scale,
y : vec.y * scale
};
}
使用例です。
2Dベクトル(10,5)から2Dベクトル(20,-7)を減算する
var vec1 = Vec2dCreate(10,5); // ベクトルを作成する
var vec2 = Vec2dScale(vec1,2); // ベクトルを乗算する
2Dベクトルの長さを求める
ベクトルの長さを計算 |
2Dベクトル同士の内積を求める
ベクトルとベクトルの内積を計算 |
垂直な2Dベクトルを求める
垂直な2Dベクトルを計算 |
2Dベクトルを正規化する
正規化ベクトルを計算 |