Springhead
An open source physics engine for virtual reality, haptics and motion generation.
クラス テンプレート TAffine< T >

TAffine行列(回転,拡大,平行移動を表す)行列. [詳細]

#include <Affine.h>

TAffine< T >に対する継承グラフ

Public 型

typedef PTM::TMatrixDescCol
< TAffine< T >
, PTM::TMatrixRow< 4, 4, T >
, 4, 4, 4, T > 
desc
 
typedef PTM::TMatrixBase
< 4, 4, desc > 
base_type
 

Public メソッド

 DEF_MATRIX_BASIC_MEMBER (TAffine)
 継承されない基本的なメンバの定義. [詳細]
 
element_type & item_impl (size_t i, size_t j)
 要素のアクセス
 
const element_type & item_impl (size_t i, size_t j) const
 
PTM::TSubMatrixCol< 3, 3, desc > & Rot ()
 回転拡大変換部への参照を返す.
 
const PTM::TSubMatrixCol
< 3, 3, desc > & 
Rot () const
 回転拡大変換部への参照を返す (const版).
 
基底ベクトルへのアクセス
TVec3< element_type > & Ex ()
 
const TVec3< element_type > & Ex () const
 
TVec3< element_type > & Ey ()
 
const TVec3< element_type > & Ey () const
 
TVec3< element_type > & Ez ()
 
const TVec3< element_type > & Ez () const
 
TVec3< element_type > & Trn ()
 
const TVec3< element_type > & Trn () const
 
TVec3< element_type > & Pos ()
 平行移動成分(Trn()の別名)
 
const TVec3< element_type > & Pos () const
 平行移動成分(Trn()の別名,const 版)
 
要素へのアクセス
element_type & ExX ()
 
const element_type & ExX () const
 
element_type & ExY ()
 
const element_type & ExY () const
 
element_type & ExZ ()
 
const element_type & ExZ () const
 
element_type & EyX ()
 
const element_type & EyX () const
 
element_type & EyY ()
 
const element_type & EyY () const
 
element_type & EyZ ()
 
const element_type & EyZ () const
 
element_type & EzX ()
 
const element_type & EzX () const
 
element_type & EzY ()
 
const element_type & EzY () const
 
element_type & EzZ ()
 
const element_type & EzZ () const
 
element_type & TrnX ()
 
const element_type & TrnX () const
 
element_type & TrnY ()
 
const element_type & TrnY () const
 
element_type & TrnZ ()
 
const element_type & TrnZ () const
 
element_type & PosX ()
 TrnX()の別名
 
const element_type & PosX () const
 
element_type & PosY ()
 TrnY()の別名
 
const element_type & PosY () const
 
element_type & PosZ ()
 TrnZ()の別名
 
const element_type & PosZ () const
 
element_type & ExW ()
 
const element_type & ExW () const
 
element_type & EyW ()
 
const element_type & EyW () const
 
element_type & EzW ()
 
const element_type & EzW () const
 
element_type & TrnW ()
 
const element_type & TrnW () const
 
element_type & PosW ()
 
const element_type & PosW () const
 

Public 変数

union {
   struct {
      T   xx
 
      T   xy
 
      T   xz
 
      T   xw
 
      T   yx
 
      T   yy
 
      T   yz
 
      T   yw
 
      T   zx
 
      T   zy
 
      T   zz
 
      T   zw
 
      T   px
 
      T   py
 
      T   pz
 
      T   pw
 
   } 
 
   T   data [4][4]
 
}; 
 

初期化と構築

template<class BUF >
void LookAt (const PTM::TVectorBase< 3, BUF > &targetPos, const TVec3< typename BUF::element_type > &upDir=TVec3< typename BUF::element_type >(0, 1, 0))
 注視行列として初期化 [詳細]
 
template<class BUF >
void LookAtGL (const PTM::TVectorBase< 3, BUF > &targetPos, const TVec3< typename BUF::element_type > &upDir=TVec3< typename BUF::element_type >(0, 1, 0))
 注視行列として初期化 [詳細]
 
void Orthonormalization ()
 正規直交化
 
void set_default ()
 コンストラクタ
 
static TAffine< T > Unit ()
 単位行列
 
static TAffine< T > Trn (element_type px, element_type py, element_type pz)
 平行移動
 
static TAffine< T > Rot (element_type th, char axis)
 x/y/z軸まわり回転
 
template<class BUF >
static TAffine< T > Rot (element_type th, const PTM::TVectorBase< 3, BUF > &axis)
 任意軸まわり回転 [詳細]
 
static TAffine< T > Scale (element_type sx, element_type sy, element_type sz)
 拡大
 
template<class BUFS , class BUFZ >
static TAffine< T > ProjectionGL (const PTM::TVectorBase< 3, BUFS > &screen, const PTM::TVectorBase< 2, BUFZ > &size, element_type front=1.0f, element_type back=10000.0f)
 OpenGLの射影行列として初期化 [詳細]
 
template<class BUFS , class BUFZ >
static TAffine< T > ProjectionD3D (const PTM::TVectorBase< 3, BUFS > &screen, const PTM::TVectorBase< 2, BUFZ > &size, element_type front=1.0f, element_type back=10000.0f)
 Direct3Dの射影行列として初期化 [詳細]
 
template<class BUFS , class BUFZ >
static TAffine< T > OrthoGL (const PTM::TVectorBase< 3, BUFS > &screen, const PTM::TVectorBase< 2, BUFZ > &size, element_type front=1.0f, element_type back=10000.0f)
 OpenGLの直交射影変換 [詳細]
 

説明

template<class T>
class Spr::TAffine< T >

概要は,pgAffine 参照.

関数

DEF_MATRIX_BASIC_MEMBER ( TAffine< T >  )
参照
::DEF_MATRIX_BASIC_MEMBER
void LookAt ( const PTM::TVectorBase< 3, BUF > &  targetPos,
const TVec3< typename BUF::element_type > &  upDir = TVec3<typename BUF::element_type>(0,1,0) 
)
inline
    @param targetPos 注視点の位置
    @param upDir y向きベクトル
    Affine行列の位置はそのままに,Ez()がtargetPosへ向き,Ey()がupDirへ向くように傾きを設定する.
    位置はTrn() (Pos())で予め設定する.

NOTE: 今までの実装ではupDirが位置ベクトルとして実装されていましたが,OpenGLの仕様に合わせるため 方向ベクトルとしました.既存のコードは影響を受ける可能性があります. tazz 09/05/29

void LookAtGL ( const PTM::TVectorBase< 3, BUF > &  targetPos,
const TVec3< typename BUF::element_type > &  upDir = TVec3<typename BUF::element_type>(0,1,0) 
)
inline
    @param targetPos 注視点の位置
    @param upDir y向きベクトル
    Affine行列の位置はそのままに,-Ez()がtargetPosへ向き,Ey()がupDirへ向くように傾きを設定する.
    位置はTrn() (Pos())で予め設定する.

NOTE: 上と同様の注意.

static TAffine<T> OrthoGL ( const PTM::TVectorBase< 3, BUFS > &  screen,
const PTM::TVectorBase< 2, BUFZ > &  size,
element_type  front = 1.0f,
element_type  back = 10000.0f 
)
inlinestatic
引数
vpSizeビューポートのサイズ
static TAffine<T> ProjectionD3D ( const PTM::TVectorBase< 3, BUFS > &  screen,
const PTM::TVectorBase< 2, BUFZ > &  size,
element_type  front = 1.0f,
element_type  back = 10000.0f 
)
inlinestatic
引数
screenカメラから見たビューポートの中心の位置
sizeビューポートのサイズ
front手前のクリッピング平面とカメラの距離
back奥のクリッピング平面とカメラの距離
static TAffine<T> ProjectionGL ( const PTM::TVectorBase< 3, BUFS > &  screen,
const PTM::TVectorBase< 2, BUFZ > &  size,
element_type  front = 1.0f,
element_type  back = 10000.0f 
)
inlinestatic
引数
screenカメラから見たビューポートの中心の位置
sizeビューポートのサイズ
front手前のクリッピング平面とカメラの距離
back奥のクリッピング平面とカメラの距離
static TAffine<T> Rot ( element_type  th,
const PTM::TVectorBase< 3, BUF > &  axis 
)
inlinestatic
        +                                                                      +
        |u^2+(1-u^2)cos(th)      uv(1-cos(th))-wsin(th)  wu(1-cos(th))+vsin(th)|
    R = |uv(1-cos(th))+wsin(th)  v^2+(1-v^2)cos(th)      vw(1-cos(th))-usin(th)|
        |wu(1-cos(th))-vsin(th)  vw(1-cos(th))+usin(th)  w^2+(1-w^2)cos(th)    |
        +                                                                      +

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