00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033 #ifndef esve_engine_dim4_Transform_hxx
00034 #define esve_engine_dim4_Transform_hxx
00035
00036 #include <esve/types/quat.hxx>
00037 #include <esve/types/pure.hxx>
00038
00039 namespace esve { namespace engine { namespace dim4 {
00040
00067
00068 class Transform
00069 {
00070 public:
00072 static const Transform & IDENTITY ;
00073
00079
00082 virtual const types::quat & a() const = 0 ;
00083 virtual void a( const types::quat & a ) = 0 ;
00085
00088 virtual const types::quat & b() const = 0 ;
00089 virtual void b( const types::quat & b ) = 0 ;
00091
00094 virtual const types::quat & c() const = 0 ;
00095 virtual void c( const types::quat & c ) = 0 ;
00097
00100 virtual const types::quat & d() const = 0 ;
00101 virtual void d( const types::quat & d ) = 0 ;
00103
00115
00117 virtual void left_act( const Transform & left ) = 0 ;
00118
00120 virtual void right_act( const Transform & right ) = 0 ;
00121
00123 virtual
00124 void
00125 act( const Transform & action,
00126 const Transform & basis = IDENTITY ) = 0 ;
00127
00135 virtual
00136 void
00137 rotate( types::real alpha,
00138 types::real beta,
00139 const types::quat & r,
00140 const types::quat & s,
00141 const Transform & basis = IDENTITY ) = 0 ;
00142
00150 virtual
00151 void
00152 rotate( types::real alpha,
00153 types::real beta,
00154 const types::pure & u,
00155 const Transform & basis = IDENTITY ) = 0 ;
00156
00158 virtual
00159 void
00160 translate( const types::quat & r,
00161 const Transform & basis = IDENTITY ) = 0 ;
00162
00165 virtual
00166 void
00167 invertate( const types::quat & r,
00168 const Transform & basis = IDENTITY ) = 0 ;
00169
00171 virtual
00172 void
00173 scalate( types::real gamma,
00174 const Transform & basis = IDENTITY ) = 0 ;
00176
00180
00182 virtual void identity() = 0 ;
00183
00185 virtual void invert() = 0 ;
00186
00188 virtual void assign( const Transform & t ) = 0 ;
00189
00200 virtual void normalize() = 0 ;
00201
00203 virtual bool operator==( const Transform & ) const = 0 ;
00204
00206 virtual bool operator!=( const Transform & ) const = 0 ;
00208
00209 virtual ~Transform() = 0 ;
00210
00211 protected:
00212 Transform() ;
00213
00214 private:
00215 Transform( const Transform & ) ;
00216 Transform & operator=( const Transform & ) ;
00217 } ;
00218
00219 }}}
00220
00221 #endif