I have an orientation expressed with a quaternion and an angular velocity expressed as either a quaternion or a number (radians per second around the original orientation). I understand how to do this using conversion to axis-angle but that method is rather computationally expensive and is not a realistic option. How would I go about modifying the orientation quaternion given a time interval (in seconds)? I need a solution for both cases (the quaternion and the number). However, converting one case into the other is acceptable and may be preferable depending on the computational complexity of the various algorithms/formulae required for conversions.
相关问题
- Is GLFW designed to use without LWJGL (in java)?
- How does gl_ClipVertex work relative to gl_ClipDis
- Rotating an Object properly around a pivot point g
- Incorrect Clipping and 3D Projection when using Sl
- Create depth map from 3d points
相关文章
- Converting glm::lookat matrix to quaternion and ba
- Algorithm for partially filling a polygonal mesh
- Robust polygon normal calculation
- Keep constant number of visible circles in 3D anim
- How do I remove axis from a rotation matrix?
- How to smooth the blocks of a 3D voxel world?
- Mayavi: rotate around y axis
- SVG circle starting point
For update of orientation , you require to multiply current orientation by delta rotation. This is comparable expensive operation with axis angle conversion.
Common way to represent angular velocity is "exponential map"m the 3d vector parallel with rotation axis and magnitude of rotation velocity (radians per second). The conversion to delta rotation quaternion looks like
If your deltaTime is small and rotation speed is small , you can use approximation by 1st Taylor series multiplier. But you should normalize result quaternion to avoid numerical instability more often.