00001
00002
00004
00006
00007
00008
00009
00010
00011 #ifndef _Orientation_h
00012 #define _Orientation_h
00013
00019 #include "BaseSRF.h"
00020 #include "Exception.h"
00021
00022 namespace srm
00023 {
00024
00025
00030 class EXPORT_SRM_CPP_DLL Orientation
00031 {
00032 public:
00033
00035 BaseSRF *getSRF() const {
00036 return _srf;
00037 }
00038
00042 void getRefCoord( Coord3D &coord ) const;
00043
00045 void getMatrix( Matrix3x3 mat ) const;
00046
00050 void getDirectionComp1( Direction &dir ) const;
00051
00055 void getDirectionComp2( Direction &dir ) const;
00056
00060 void getDirectionComp3( Direction &dir ) const;
00061
00066 void getDirectionComp( SRM_Integer index, Direction &dir ) const;
00067
00071 void setDirectionComp( const Direction &dir1,
00072 const Direction &dir2,
00073 const Direction &dir3 );
00074
00079 void setDirectionComp( const SRM_Integer index,
00080 const Direction &dir );
00081
00083 void setMatrix( const Matrix3x3 mat );
00084
00086 bool isEqual( const Orientation &ori ) const;
00087
00089 Orientation* makeCopy() const;
00090
00091 protected:
00092
00093 friend class BaseSRF_3D;
00094
00098 Orientation( BaseSRF *srf,
00099 const Vector3 ref_coord,
00100 const Matrix3x3 matrix );
00101
00103 virtual ~Orientation() {
00104 _srf->release();
00105 }
00106
00107 Orientation &operator =( const Orientation & ) { return *this; }
00108
00110 BaseSRF *_srf;
00112 Vector3 _ref_coord;
00114 Matrix3x3 _mat;
00115 };
00116
00117 }
00118
00119 #endif // _Orientation_h
00120