Public 型 | Public メソッド | 変数
クラス テンプレート mist::vector3< T >

3次元ベクトルを扱うクラス [詳細]

#include <vector.h>

Public 型

typedef T value_type
 MISTのコンテナ内に格納するデータ型.mist::array< data > の data と同じ
typedef size_t size_type
 符号なしの整数を表す型.コンテナ内の要素数や,各要素を指定するときなどに利用し,内部的には size_t 型と同じ
typedef ptrdiff_t difference_type
 符号付きの整数を表す型.コンテナ内の要素数や,各要素を指定するときなどに利用し,内部的には ptrdiff_t 型と同じ
typedef float_type< T >::value_type float_type
 長さなどを計算するときに用いる浮動小数点型

Public メソッド

 vector3 ()
 デフォルトコンストラクタ.( 0, 0, 0 ) に初期化する
 vector3 (const value_type &xx, const value_type &yy, const value_type &zz)
 ( xx, yy, zz ) のベクトルを作成する
 vector3 (const value_type &vv)
 ( vv, vv, vv ) のベクトルを作成する
template<class TT >
 vector3 (const vector3< TT > &v)
 他の3次元ベクトルで要素の型が異なるものから同じ要素を持つベクトルを作成する
 vector3 (const vector3< T > &v)
 他の3次元ベクトルで同じ要素型のものを用いて初期化する
template<class TT >
const vector3operator= (const vector3< TT > &v)
 他データ型の3次元ベクトルを代入する
const vector3operator= (const vector3< T > &v)
 他の3次元ベクトルを代入する
vector3 operator- () const
 符号反転したベクトルを返す
template<class TT >
vector3operator+= (const vector3< TT > &v)
 ベクトル和
template<class TT >
vector3operator-= (const vector3< TT > &v)
 ベクトル差
template<class TT >
vector3operator*= (const vector3< TT > &v)
 ベクトルの外積
template<class TT >
vector3operator*= (const TT &a)
 ベクトルの定数倍
template<class TT >
vector3operator/= (const TT &a)
 ベクトルを定数で割る
bool operator== (const vector3 &v) const
 2つのベクトルが等しい(全要素が同じ値を持つ)かどうかを判定する
bool operator!= (const vector3 &v) const
 2つのベクトルが等しくない(どれか1つでも異なる要素を持つ)かどうかを判定する
bool operator< (const vector3 &v) const
 2つのベクトルの < を判定する
bool operator<= (const vector3 &v) const
 2つのベクトルの <= を判定する
bool operator> (const vector3 &v) const
 2つのベクトルの > を判定する
bool operator>= (const vector3 &v) const
 2つのベクトルの >= を判定する
vector3 unit () const
 単位ベクトルを計算する
template<class TT >
promote_trait< T, TT >::value_type inner (const vector3< TT > &v) const
 ベクトルの内積を計算する
template<class TT >
vector3< typename
promote_trait< value_type, TT >
::value_type
outer (const vector3< TT > &v) const
 ベクトルの外積を計算する
float_type length () const
 ベクトルの大きさを計算する
vector3 rotate (const vector3 &v, double theta) const
 任意軸周りのベクトルの回転

変数

value_type x
 X座標値
value_type y
 Y座標値
value_type z
 Z座標値

説明

template<class T>
class mist::vector3< T >

3次元ベクトルを扱うクラス

ベクトルの内積・外積等を簡便に扱うためのクラス

引数
T… ベクトル内に各座標を表すデータ型

コンストラクタとデストラクタ

template<class T>
template<class TT >
mist::vector3< T >::vector3 ( const vector3< TT > &  v)
inline

他の3次元ベクトルで要素の型が異なるものから同じ要素を持つベクトルを作成する

注意
異なる要素型間でデータの変換が可能でなくてはならない

関数

template<class T>
template<class TT >
promote_trait< T, TT >::value_type mist::vector3< T >::inner ( const vector3< TT > &  v) const
inline

ベクトルの内積を計算する

\[ \mbox{\boldmath p} \cdot \mbox{\boldmath q} = p_x \times q_x + p_y \times q_y + p_z \times q_z \]

引数
[in]v… 右辺値

参照元 mist::convert_to_vertex_face_list(), と mist::quaternion< T >::rotate().

template<class T>
float_type mist::vector3< T >::length ( ) const
inline

ベクトルの大きさを計算する

\[ \left\|\mbox{\boldmath v}\right\| = \sqrt{v_x^2 + v_y^2 + v_z^2} \]

戻り値
ベクトルの大きさ
template<class T>
bool mist::vector3< T >::operator!= ( const vector3< T > &  v) const
inline

2つのベクトルが等しくない(どれか1つでも異なる要素を持つ)かどうかを判定する

\[ \mbox{\boldmath p} \neq \mbox{\boldmath q} \rightarrow \overline{ p_x = q_x \; \wedge \; p_y = q_y \; \wedge \; p_z = q_z} \]

引数
[in]v… 右辺値
戻り値
true… 2つのベクトルが異なる場合
false… 2つのベクトルが等しい場合
template<class T>
bool mist::vector3< T >::operator< ( const vector3< T > &  v) const
inline

2つのベクトルの < を判定する

\[ \mbox{\boldmath p} \ge \mbox{\boldmath q} \rightarrow \overline{ p_x \ge q_x \; \wedge \; p_y \ge q_y \; \wedge \; p_z \ge q_z } \]

引数
[in]v… 右辺値
戻り値
true… v1 < v2 の場合
false… v1 >= v2 の場合
template<class T>
bool mist::vector3< T >::operator<= ( const vector3< T > &  v) const
inline

2つのベクトルの <= を判定する

\[ \mbox{\boldmath p} \le \mbox{\boldmath q} \rightarrow p_x \le q_x \; \wedge \; p_y \le q_y \; \wedge \; p_z \le q_z \]

引数
[in]v… 右辺値
戻り値
true… v1 <= v2 の場合
false… v1 > v2 の場合
template<class T>
template<class TT >
const vector3& mist::vector3< T >::operator= ( const vector3< TT > &  v)
inline

他データ型の3次元ベクトルを代入する

コピー元であるベクトル v と全く同じベクトルを作成する.

引数
[in]v… コピー元のベクトル
戻り値
自分自身
template<class T>
const vector3& mist::vector3< T >::operator= ( const vector3< T > &  v)
inline

他の3次元ベクトルを代入する

コピー元であるベクトル v と全く同じベクトルを作成する.

引数
[in]v… コピー元のベクトル
戻り値
自分自身
template<class T>
bool mist::vector3< T >::operator== ( const vector3< T > &  v) const
inline

2つのベクトルが等しい(全要素が同じ値を持つ)かどうかを判定する

\[ \mbox{\boldmath p} = \mbox{\boldmath q} \rightarrow p_x = q_x \; \wedge \; p_y = q_y \; \wedge \; p_z = q_z \]

引数
[in]v… 右辺値
戻り値
true… 2つのベクトルが等しい場合
false… 2つのベクトルが異なる場合
template<class T>
bool mist::vector3< T >::operator> ( const vector3< T > &  v) const
inline

2つのベクトルの > を判定する

\[ \mbox{\boldmath p} \le \mbox{\boldmath q} \rightarrow \overline{ p_x \le q_x \; \wedge \; p_y \le q_y \; \wedge \; p_z \le q_z } \]

引数
[in]v… 右辺値
戻り値
true… v1 > v2 の場合
false… v1 <= v2 の場合
template<class T>
bool mist::vector3< T >::operator>= ( const vector3< T > &  v) const
inline

2つのベクトルの >= を判定する

\[ \mbox{\boldmath p} \ge \mbox{\boldmath q} \rightarrow p_x \ge q_x \; \wedge \; p_y \ge q_y \; \wedge \; p_z \ge q_z \]

引数
[in]v… 右辺値
戻り値
true… v1 >= v2 の場合
false… v1 < v2 の場合
template<class T>
template<class TT >
vector3< typename promote_trait< value_type, TT >::value_type > mist::vector3< T >::outer ( const vector3< TT > &  v) const
inline

ベクトルの外積を計算する

\[ \mbox{\boldmath p} \times \mbox{\boldmath q} = \left( p_y \times q_z - p_z \times q_y \;,\; p_z \times q_x - p_x \times q_z \;,\; p_x \times q_y - p_y \times q_x \right)^T \]

引数
[in]v… 右辺値

参照元 mist::quaternion< T >::rotate().

template<class T>
vector3 mist::vector3< T >::rotate ( const vector3< T > &  v,
double  theta 
) const
inline

任意軸周りのベクトルの回転

引数
[in]v… 回転軸
[in]theta… 右ねじ方向?で測った回転角度
戻り値
回転後のベクトル
template<class T>
vector3 mist::vector3< T >::unit ( ) const
inline

単位ベクトルを計算する

\[ \frac{\mbox{\boldmath v}}{\left\|{\mbox{\boldmath v}}\right\|} \]

参照元 mist::quaternion< T >::quaternion(), と mist::quaternion< T >::rotate().


このクラスの説明は次のファイルから生成されました:

Generated on Wed Nov 12 2014 19:44:29 for MIST by doxygen 1.8.1.2