ベクトル

ベクトル型は物体の位置や速度,力などの物理量を表現するために頻繁に使われます. 例えばdouble型の要素からなる3次元ベクトルxを定義するには

Vec3d x;

とします.要素アクセスは[]演算子を用います.

x[0];    // 0-th element

この他,Vec[2][f\d]については.x, .y, .zでも要素アクセスできます.

任意の固定サイズのベクトルも使えます. float型の10次元ベクトルは

TVector<10, float> x;    // 10-dimensional float vector

とします. 可変長ベクトルは

VVector<float> x;
x.resize(10);            // can be resized at any time

で使えます.

基本的な演算は一通りサポートされています.

Vec3d a, b, c;
double k;

c = a + b;               // addition
a += b;

c = a - b;               // subtraction
a -= b;

b = k * a;               // multiply vector by scalar
a *= k;

k = x * y;               // scalar product

x % y;                   // vector product (3D vector only)

すべてのベクトル型について以下のメンバ関数が使えます.

a.size();                // number of elements
a.norm();                // norm
a.square();              // square of norm
a.unitize();             // normalize
b = a.unit();            // normalized vector