PolyQuaternionCurve.h 1011 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * PolyQuaternionCurve.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 9/15/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Math
  10. #pragma once
  11. #include "PolyGlobals.h"
  12. #include "PolyBezierCurve.h"
  13. #include "PolyQuaternion.h"
  14. #include <vector>
  15. using std::vector;
  16. namespace Polycode {
  17. class _PolyExport QuatTriple {
  18. public:
  19. Quaternion q1;
  20. Quaternion q2;
  21. Quaternion q3;
  22. };
  23. class _PolyExport QuaternionCurve {
  24. public:
  25. QuaternionCurve(BezierCurve *wCurve, BezierCurve *xCurve, BezierCurve *yCurve, BezierCurve *zCurve);
  26. ~QuaternionCurve();
  27. Quaternion interpolate(float t, bool useShortestPath);
  28. Quaternion interpolate(unsigned int fromIndex, float t, bool useShortestPath);
  29. void generatePointsFromCurves(BezierCurve *wCurve, BezierCurve *xCurve, BezierCurve *yCurve, BezierCurve *zCurve);
  30. void recalcTangents(void);
  31. private:
  32. vector<QuatTriple> tPoints;
  33. vector<Quaternion> points;
  34. vector<Quaternion> tangents;
  35. };
  36. }