第 3 章 リファレンス 51
3.5 Vector/Point クラス
物理的な空間ベクトルまたは3次元空間の点を表すクラス.WaveFieldライブラリでは,Pointクラ スとVectorクラスは同一のクラスの別名である.
3.5.1 位置許容誤差
位置許容誤差とは,Vectorクラス/Pointクラスにおいて,同一の点を識別する際に許されるメート ル単位の誤差のことである.すなわち,ある2点間の距離がこの誤差以下である場合は,その2点は同一 の点であると識別される.この誤差はSetPositionTolerance()関数とGetPositionTolerance()関 数を用いて取得・設定できる.この位置許容誤差は,Vectorクラス/Pointクラス以外においても様々な 判定基準として用いられている.
Note
• デフォルトでは位置許容誤差は1マイクロメートルである.
3.5.2 メンバー関数
Vector(double x = 0, double y = 0, double z = 0) Point(double x = 0, double y = 0, double z = 0) 戻り値 なし
説 明 コンストラクタ.要素(x,y,z)のベクトルまたは座標(x,y,z)の点を生成する.
double GetX() const double GetY() const double GetZ() const 戻り値 成分または座標値
説 明 それぞれ,x,y,z方向の成分または座標値を取得する.
void SetX(double val) void SetY(double val) void SetZ(double val) 戻り値 なし
説 明 それぞれ,x,y,z方向の成分または座標値を設定する.
double& X() double& Y() double& Z()
戻り値 成分または座標値
説 明 それぞれ,x,y,z方向の成分または座標値への参照を取得する.
static Vector I(void) static Vector J(void) static Vector K(void) 戻り値 単位ベクトル
説 明 それぞれ,x,y,z方向の単位ベクトルを取得する.
Example
V e c t o r v ;
v = V e c t o r :: I ( ) * 3 + V e c t o r :: J ( ) * 2 + V e c t o r :: K ( ) * 4 ; // ベ ク ト ルv =(3 ,2 ,4)
122 第3章 リファレンス
double GetLength(void) const 戻り値 ベクトルの長さ
説 明 ベクトルの長さを取得する.
Vector& SetLength(double len) 戻り値 対象ベクトルへの参照
説 明 ベクトルの方向を保ったまま長さlenを設定する.
double GetSqure(void) const 戻り値 ベクトルの長さの2乗
説 明 ベクトルの長さの2乗を取得する.
Vector& Normalize(void) 戻り値 対象ベクトルへの参照
説 明 対象ベクトルを単位ベクトルへ変換する.
Vector GetNormalized(void) const 戻り値 単位ベクトル
説 明 対象ベクトルの単位ベクトルを取得する.
double GetDistance(Point p) const
double GetDistance(const Line& line)const double GetDistance(const Plane& plane)const 戻り値 距離
説 明 それぞれ,点p,Line型の直線line,Plane型の平面planeとの距離を取得する.
bool IsInline(const Line& line) const 戻り値 判定結果
説 明 Line型の直線line上にあるかどうかを判定する.
Note
• この判定は,対象オブジェクトのlineからの距離を計算して,それが位置許容誤差内であるかど うかを調べることによって行われる.
• 位置許容誤差の取得と設定にはそれぞれGetPositionTolerance()関数と SetPositionTolerance()関数を用いる.
bool IsInplane(const Plane& plane) const 戻り値 判定結果
説 明 Plane型のplane上にあるかどうかを判定する.
Note
• この判定は,対象オブジェクトの平面planeからの距離を計算して,それが位置許容誤差内であ るかどうかを調べることによって行われる.
• 位置許容誤差の取得と設定にはそれぞれGetPositionTolerance()関数とSetPositionTolerance() 関数を用いる.
bool IsEmpty() 戻り値 判定結果
説 明 空のオブジェクトかどうかを判定する.
3.5.3 オーバーロード演算子
Vector operator-(void) const 戻り値 ベクトル
説 明 向きを逆転したベクトルを取得する単項演算子.
Vector operator*(double rhs) const Vector operator/(double rhs) const 戻り値 演算結果のベクトル
説 明 スカラーrhsとの乗除算を行う2項演算子.
Vector& operator*=(double rhs) Vector& operator/=(double rhs) 戻り値 代入されたベクトルへの参照
説 明 スカラーrhsとの乗除算を行う代入演算子.
124 第3章 リファレンス
Vector operator-(const Vector& rhs) const Vector operator+(const Vector& rhs) const 戻り値 演算結果のベクトル
説 明 ベクトルrhsとの加減算を行う2項演算子.
Vector& operator-=(const Vector& rhs) Vector& operator+=(const Vector& rhs) 戻り値 代入されたベクトルへの参照
説 明 ベクトルrhsとの加減算を行う代入演算子.
double operator*(const Vector& vec) 戻り値 内積の結果(スカラー)
説 明 ベクトルvecとの内積を行う2項演算子.
Vector operator&(const Vector& vec) const 戻り値 外積の結果(ベクトル)
説 明 ベクトルvecとの外積を行う2項演算子.
Vector& operator&=(const Vector& vec) 戻り値 代入されたベクトルへの参照
説 明 ベクトルvecとの外積を行う代入演算子.
Vector& operator*=(const RMatrix& mat) 戻り値 代入されたベクトルへの参照
説 明 3×3正方行列matを左からベクトルに乗算する代入演算子.例えば,
v *= M;
はv ←M vに相当する演算を行う.
Note
• 行列とベクトルの乗算演算子で代入演算子ではないタイプはRMatrixクラスの乗算演算子として 定義されている.
Example
V e c t o r vec (1 , 0 , 0) , vv ;
R M a t r i x mat = R M a t r i x X ( 3 0 * Deg );
vec *= mat ; // V e c t o rク ラ ス の 乗 算 演 算 子
vv = mat * vec ; // R M a t r i xク ラ ス の 乗 算 演 算 子
bool operator==(const Vector& rhs) const bool operator!=(const Vector& rhs) const 戻り値 判定結果
説 明 ベクトルrhsと一致または不一致であればtrueになる.
Note
• この判定は,2点(位置ベクトル)の間の距離を計算して,それが位置許容誤差内であるかどうかを 調べることによって行われる.
• 位置許容誤差の取得と設定にはそれぞれGetPositionTolerance()関数と wfl::SetPositionTolerance()関数を用いる.