True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

FuncSplineQuaternion.h

00001 //---------------------------------------------------------------------------------
00002 // File Name: FuncSplineQuaternion.h
00003 // Description: // More of a uniform b spline actually
00004 //
00005 // Copyright (C) 2004 True Axis Pty Ltd, Australia. 
00006 // All Rights Reserved.
00007 //
00008 // History:
00009 //      Created File.
00010 //---------------------------------------------------------------------------------
00011 
00012 // SpellCheckerDisable
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 //  virtual float GetOutputInSegment(Point* pPoint, float fInput) const;
00064 //  virtual float GetGradientInSegment(Point* pPoint, float fInput) const;
00065 
00066     void GetOutputInSegment(Mat33& m33Output, Point* pPoint, float fInput) const;
00067 //  void GetGradientInSegment(Point* pPoint, float fInput) const;
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.