00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TA_FUNCSPLINEQUATERION_H
00015 #define TA_FUNCSPLINEQUATERION_H
00016
00017 #ifndef TA_FUNCSPLINEBEZIER_H
00018 #include "FuncSplineBezier.h"
00019 #endif // TA_FUNCSPLINEBEZIER_H
00020
00021 #ifndef TA_ANSI_C
00022
00023 namespace TA
00024 {
00025
00026 struct Mat33;
00027
00028 class TACOMMON_CLASS FuncSplineQuaternion : public FuncSplineBezier
00029 {
00030 public:
00031 FuncSplineQuaternion();
00032 virtual ~FuncSplineQuaternion();
00033
00034 virtual void Initialise();
00035 void Initialise(const FuncSplineQuaternion& that);
00036 virtual void Finalise();
00037
00038 PointHandle AddPoint(float fInput, const Mat33& m33Output);
00039 PointHandle AddPoint(float fInput, const Mat33& m33Output, float fMinInputSeparation);
00040 void SetPoint(PointHandle hPoint, float fInput, const Mat33& m33Output);
00041 void GetOutput(float fInput, Mat33& m33Output);
00042 float GetAngularVelocity(float fInput);
00043 struct Quat
00044 {
00045 float x;
00046 float y;
00047 float z;
00048 float w;
00049 };
00050
00051 protected:
00052
00053 class QuaternionSegment : public FuncSplineBezier::BezierSegment
00054 {
00055 public:
00056 virtual Serialise(Serialiser& serialiser);
00057 Quat qA;
00058 Quat qB;
00059 Quat qC;
00060 Quat qD;
00061 };
00062
00063
00064
00065
00066 void GetOutputInSegment(Mat33& m33Output, Point* pPoint, float fInput) const;
00067
00068 virtual void Optimise();
00069 virtual Point* CreatePoint();
00070 };
00071
00072 }
00073
00074 #endif // TA_ANSI_C
00075
00076 #endif // TA_FUNCSPLINEQUATERION_H
© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.