AnimaL |
Tutorial |
Documentation |
00001 00002 #ifndef _FRAME_H 00003 #define _FRAME_H 00004 00005 namespace animal 00006 { 00007 namespace octree 00008 { 00009 class Frame; 00010 } 00011 } 00012 00013 00014 #include "global.h" 00015 00016 namespace animal 00017 { 00018 namespace octree 00019 { 00020 class Frame 00021 { 00022 public: 00023 Frame(); 00024 Frame( const Vec3d origin, const Vec3d u, const Vec3d v, const Vec3d w ); 00025 00026 ~Frame(); 00027 00028 Vec3d getVector( unsigned int i ) const; 00029 Vec3d operator[]( unsigned int i ) const; 00030 00031 void setVector( unsigned int i, Vec3d v ); 00032 00033 Vec3d getOrigin() const { return _origin; }; 00034 void setOrigin( Vec3d v ); 00035 00036 inline HMat getMatrix() const { return _matrix; }; 00037 inline HMat getInvMatrix() const { return _invMatrix; }; 00038 00039 00044 Vec3d computePosition( Vec3d params, Vec3d scaling=Vec3d(1,1,1) ) const; 00045 00049 Vec3d getLocalCoordinates( Vec3d Q ); 00050 00051 00052 protected: 00053 std::vector<Vec3d> _frame; 00054 Vec3d _origin; 00055 00056 HMat _matrix; 00057 HMat _invMatrix; 00058 00059 bool _invMatrixComputed; 00060 00061 }; 00062 00063 } 00064 } 00065 00066 #endif