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 #ifndef _CIvfSlerp_h_
00026 #define _CIvfSlerp_h_
00027
00028 #include <ivf/ivfconfig.h>
00029
00030 #include <ivfmath/IvfMathBase.h>
00031 #include <ivfmath/IvfSlerpSegment.h>
00032
00033 IvfSmartPointer(CIvfSlerp);
00034
00040 class IVFMATH_API CIvfSlerp : public CIvfMathBase {
00041 private:
00042 std::vector<CIvfSlerpSegment*> m_segments;
00043 std::vector<CIvfQuat*> m_quats;
00044 int m_size;
00045 void initSlerp();
00046 public:
00047 CIvfSlerp();
00048 virtual ~CIvfSlerp();
00049
00050 IvfClassInfo("CIvfSlerp",CIvfMathBase);
00051
00052 void clear();
00053 void update();
00054
00055 void setSize(int size);
00056 int getSize();
00057
00058 void setQuat(int idx, CIvfQuat& q);
00059 void setQuatAxisAngle(int idx, double vx, double vy, double vz, double angle);
00060 CIvfQuat& getQuat(int idx);
00061 CIvfQuat& getQuat(double t);
00062 };
00063
00064 #endif