10 #ifndef hifi_RotationConstraint_h
11 #define hifi_RotationConstraint_h
13 #include <glm/glm.hpp>
14 #include <glm/gtc/quaternion.hpp>
16 class RotationConstraint {
18 RotationConstraint() : _referenceRotation() {}
19 virtual ~RotationConstraint() {}
22 virtual void setReferenceRotation(
const glm::quat& rotation) { _referenceRotation = rotation; }
25 const glm::quat& getReferenceRotation()
const {
return _referenceRotation; }
29 virtual bool apply(glm::quat& rotation)
const = 0;
32 virtual bool isLowerSpine()
const {
return false; }
36 virtual void dynamicallyAdjustLimits(
const glm::quat& rotation) {}
39 virtual void clearHistory() {};
42 virtual glm::quat computeCenterRotation()
const = 0;
45 glm::quat _referenceRotation = glm::quat();