-void Entity::Update(int dt) noexcept {
- Move(velocity * float(dt));
- Rotate(angular_velocity * float(dt));
+namespace {
+
+glm::quat delta_rot(const glm::vec3 &av, float dt) {
+ glm::vec3 half(av * dt * 0.5f);
+ float mag = length(half);
+ if (mag > 0.0f) {
+ float smag = std::sin(mag) / mag;
+ return glm::quat(std::cos(mag), half * smag);
+ } else {
+ return glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
+ }