• 検索結果がありません。

第 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 戻り値 成分または座標値

説 明 それぞれ,xyz方向の成分または座標値を取得する.

void SetX(double val) void SetY(double val) void SetZ(double val) 戻り値 なし

説 明 それぞれ,xyz方向の成分または座標値を設定する.

double& X() double& Y() double& Z()

戻り値 成分または座標値

説 明 それぞれ,xyz方向の成分または座標値への参照を取得する.

static Vector I(void) static Vector J(void) static Vector K(void) 戻り値 単位ベクトル

説 明 それぞれ,xyz方向の単位ベクトルを取得する.

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()関数を用いる.