+public:
+ struct State {
+ // position
+ glm::dvec3 pos;
+ // velocity
+ glm::dvec3 vel;
+ // face direction, normalized
+ glm::dvec3 dir;
+ State(
+ const glm::dvec3 &pos = glm::dvec3(0.0),
+ const glm::dvec3 &vel = glm::dvec3(0.0),
+ const glm::dvec3 &dir = glm::dvec3(0.0, 0.0, -1.0))
+ : pos(pos), vel(vel), dir(dir) { }
+ };
+ struct Derivative {
+ // velocity
+ glm::dvec3 vel;
+ // acceleration
+ glm::dvec3 acc;
+ Derivative(
+ const glm::dvec3 &vel = glm::dvec3(0.0),
+ const glm::dvec3 &acc = glm::dvec3(0.0))
+ : vel(vel), acc(acc) { }
+ };
+