holesome/src/utilities/vector_utils.hpp

38 lines
674 B
C++

#ifndef HOLESOME_VECTOR_UTILS_HPP
#define HOLESOME_VECTOR_UTILS_HPP
#include <SFML/System/Vector2.hpp>
#include <valarray>
template<typename T>
float length(sf::Vector2<T> v)
{
return std::sqrt(pow(v.x, 2) + pow(v.y, 2));
}
template<typename T>
sf::Vector2<T> normalize(sf::Vector2<T> v)
{
auto vectorLength = length(v);
if (vectorLength != 0)
{
v.x /= vectorLength;
v.y /= vectorLength;
}
return v;
}
template<typename T>
sf::Vector2<T> abs(sf::Vector2<T> v)
{
return sf::Vector2<T>(std::abs(v.x), std::abs(v.y));
}
template<typename T>
T sum(sf::Vector2<T> v)
{
return v.x + v.y;
}
#endif //HOLESOME_VECTOR_UTILS_HPP