Make quaternion constructor accept a vector instead of coordinates
This commit is contained in:
parent
e871517909
commit
df85b5eac5
1 changed files with 8 additions and 11 deletions
|
|
@ -18,12 +18,9 @@ namespace psemek::geom
|
|||
static quaternion<T> vector(geom::vector<T, 3> const & v);
|
||||
static quaternion<T> rotation(T angle, geom::vector<T, 3> const & axis);
|
||||
|
||||
template <typename ... Args>
|
||||
quaternion(Args && ... args)
|
||||
: coords{ static_cast<T>(std::forward<Args>(args))... }
|
||||
{
|
||||
static_assert(sizeof...(Args) == 4);
|
||||
}
|
||||
quaternion(geom::vector<T, 4> const & v)
|
||||
: coords{v}
|
||||
{}
|
||||
|
||||
T & operator[] (std::size_t i) { return coords[i]; }
|
||||
T const & operator[] (std::size_t i) const { return coords[i]; }
|
||||
|
|
@ -35,25 +32,25 @@ namespace psemek::geom
|
|||
template <typename T>
|
||||
quaternion<T> quaternion<T>::zero()
|
||||
{
|
||||
return quaternion<T>{T(0), T(0), T(0), T(0)};
|
||||
return quaternion<T>{geom::vector<T, 4>::zero()};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
quaternion<T> quaternion<T>::identity()
|
||||
{
|
||||
return quaternion<T>{T(1), T(0), T(0), T(0)};
|
||||
return quaternion<T>{{T(1), T(0), T(0), T(0)}};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
quaternion<T> quaternion<T>::scalar(T value)
|
||||
{
|
||||
return {value, T(0), T(0), T(0)};
|
||||
return {{value, T(0), T(0), T(0)}};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
quaternion<T> quaternion<T>::vector(geom::vector<T, 3> const & v)
|
||||
{
|
||||
return {T(0), v[0], v[1], v[2]};
|
||||
return {{T(0), v[0], v[1], v[2]}};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
|
@ -62,7 +59,7 @@ namespace psemek::geom
|
|||
auto const c = std::cos(angle / 2);
|
||||
auto const s = std::sin(angle / 2);
|
||||
|
||||
return quaternion<T>{c, s * axis[0], s * axis[1], s * axis[2]};
|
||||
return quaternion<T>{{c, s * axis[0], s * axis[1], s * axis[2]}};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue