ベクトル
ベクトルとは
MELにはC言語などにはないベクトル(vector)という型がある。
ベクトルを使用すると3次元の座標など表すときなどに便利である。
例えば、ベクトルの間では加減乗除の計算が直接できるので式が簡単になる。
また、ベクトルを使うMELコマンドも多い。
C言語における構造体のようなものだが、使い方が違うので注意が必要である。
ベクトルは<<と>>の間にX, Y, Zの要素を並べて表す。
X, Y, Zは整数(int)でも実数(float)でもよい。
(<<1.5, 2.3, 0.5>>など)
ベクトルの演算子
ベクトルの計算・比較などに使用できる演算子は以下の通り。
- +, -, /, %, +=, -=, /=, %=
- 2つのベクトルのX, Y, Z同士の演算
- *, *=
- ベクトル同士の内積
- ^
- ベクトル同士の外積
- ||, &&, !, >, <, >=, <=
- ベクトルの長さによる比較
- ==, !=,
- ベクトルのX, Y, Zがすべて同じ場合に真
ベクトル関係のコマンド
- angle vector1 vetor2
- vector1とvector2の間の角度を返す。
- cross vector1 vetor2
- vector1とvector2の外積の値を返す。
- dot vector1 vetor2
- vector1とvector2の内積の値を返す。
- mag vector
- vectorの長さの値を返す。
- rot vector1 vector2 float
- vector1をvector2を軸としてfloatだけ回転したベクトルを返す。
- unit vector
- vectorの長さを1にしたベクトル(単位ベクトル)を返す。
ベクトルの使用例
- $v1 = <<1, 2, 3>>
- 変数$v1にベクトル<<1, 2, 3>>を代入する。
- $v2 = $v1 + <<4, 5, 6>>
- 変数$v1にベクトル<<4, 5, 6>>を加算する。
- $v3 = $v1 + $v2
- ベクトル変数$v1と$v2を加算する。
もちろん、$v3もベクトル変数になる。
- $x = $v1.x
- 変数$xに$v1のX成分を代入する。
- print ($v1.x)
- $v1のX成分を表示する。
この( )が無いとエラーになることに注意。
- $v4 = <<$v1.x, $v2.y, $v3.z>>
- ベクトル変数$v4のX成分に$v1のX成分を、
Y成分に$v2のY成分を、
Z成分に$v3のZ成分を代入する。
このとき、$v4.x=$v1.xなどとはできない。
(直接X成分に代入はできない)
- $v5 = 2.5 * $v4
- ベクトル変数$v4に2.5を乗算する。(スカラー積)
- $v6 = 3 + $v4
- ベクトル変数$v4に3を加算する。
3 + $v4は<<3 + $v4.x, 3 + $v4.y, 3 + $v4.z>>と同じである。
- $iv = $v4 * $v5
- ベクトル変数$v4と$v5の内積を計算する。
変数$ivはfloatになる。
- $v7 = $v5 / $v6
- ベクトル変数$v4の$v5による除算を計算する。
$v5 / $v6は<<$v5.x/$v6.x, $v5.y/$v6.y, $v5.z/$v6.z>>と同じである。
- if($v7 > <<3, 4, 5>>) print "true\n";
- ベクトル変数$v7の長さが<<3, 4, 5>>の長さの値より大きければtrueを表示する。
- if($v7 == <<3, 4, 5>>) print "true\n";
- ベクトル変数$v7のX成分が3、Y成分が4、Z成分が5に等しければtrueを表示する。
練習
- $v1 = <<2, 3, 4>>
$v2 = <<5, 6, 7>>
として、以下の各変数の値はいくらになるか。
- $v3 = $v1 + $v2 - <<8, 9, 10>>
- $v4 = $v3 / $v2
- $v5 = 2 * ($v4 - $v3)
参考
Prev | Next
Home | Contents
abe@injapan.net