Add rotate(vector, angle) function

This commit is contained in:
Nikita Lisitsa 2021-05-17 20:20:39 +03:00
parent 62e010094b
commit bdd32ad40f

View file

@ -320,6 +320,14 @@ namespace psemek::geom
return std::acos(std::max(T{-1}, std::min(T{1}, dot(v0, v1)))); return std::acos(std::max(T{-1}, std::min(T{1}, dot(v0, v1))));
} }
template <typename T>
vector<T, 2> rotate(vector<T, 2> const & v, T angle)
{
auto const c = std::cos(angle);
auto const s = std::sin(angle);
return {v[0] * c - v[1] * s, v[0] * s + v[1] * c};
}
template <typename T, std::size_t N> template <typename T, std::size_t N>
vector<T, N> pointwise_mult(vector<T, N> const & v0, vector<T, N> const & v1) vector<T, N> pointwise_mult(vector<T, N> const & v0, vector<T, N> const & v1)
{ {