Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Make a rotation matrix based on its transform of the axial versors.
- ///
- /// \param transformed_versors a kDimensions-sized initializer list of
- /// kDimensions-dimensional Points.
- ///
- /// \todo Consider a variadic function.
- ///
- /// \sa https://en.wikipedia.org/wiki/Versor_(physics)
- ///
- template <typename RatT, size_t kDimensions>
- auto make_rotation(
- const std::initializer_list<Point<RatT, kDimensions>>& transformed_versors)
- -> std::enable_if<transformed_versors.size() == kDimensions,
- Matrix<RatT, kDimensions + 1>>
- {
- Matrix<RatT, kDimensions + 1> ret{};
- auto versor = std::cbegin(transformed_versors);
- for (int i = 0; i < kDimensions; ++i, ++versor) {
- ret.set_column(i, versor->as_vector());
- }
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement