Add operators
This commit is contained in:
@@ -61,25 +61,25 @@ namespace OpenVulkano::Math
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, qualifier Q>
|
template<typename T, qualifier Q>
|
||||||
T maxVal(const glm::tvec3<T, Q>& vec)
|
T maxVal(const tvec3<T, Q>& vec)
|
||||||
{
|
{
|
||||||
return std::max(vec.x, std::max(vec.y, vec.z));
|
return std::max(vec.x, std::max(vec.y, vec.z));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, qualifier Q>
|
template<typename T, qualifier Q>
|
||||||
T maxVal(const glm::tvec4<T, Q>& vec)
|
T maxVal(const tvec4<T, Q>& vec)
|
||||||
{
|
{
|
||||||
return std::max(std::max(vec.x, vec.y), std::max(vec.z, vec.w));
|
return std::max(std::max(vec.x, vec.y), std::max(vec.z, vec.w));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, qualifier Q>
|
template<typename T, qualifier Q>
|
||||||
T minVal(const glm::tvec3<T, Q>& vec)
|
T minVal(const tvec3<T, Q>& vec)
|
||||||
{
|
{
|
||||||
return std::min(vec.x, std::min(vec.y, vec.z));
|
return std::min(vec.x, std::min(vec.y, vec.z));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, qualifier Q>
|
template<typename T, qualifier Q>
|
||||||
T minVal(const glm::tvec4<T, Q>& vec)
|
T minVal(const tvec4<T, Q>& vec)
|
||||||
{
|
{
|
||||||
return std::min(std::min(vec.x, vec.y), std::min(vec.z, vec.w));
|
return std::min(std::min(vec.x, vec.y), std::min(vec.z, vec.w));
|
||||||
}
|
}
|
||||||
@@ -203,20 +203,33 @@ namespace OpenVulkano::Math
|
|||||||
typedef Quaternion<int> QuaternionI;
|
typedef Quaternion<int> QuaternionI;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<glm::length_t L, typename T, glm::qualifier Q, typename = std::enable_if_t<std::is_integral_v<T>>>
|
namespace glm
|
||||||
glm::vec<L, float, Q> operator / (const float lhs, const glm::vec<L, T, Q>& rhs)
|
|
||||||
{
|
{
|
||||||
return lhs / glm::vec<L, float, Q>(rhs);
|
template<length_t L, typename T, typename F, qualifier Q>
|
||||||
}
|
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||||
|
vec<L, F, Q> operator / (const F lhs, const vec<L, T, Q>& rhs)
|
||||||
|
{
|
||||||
|
return lhs / glm::vec<L, F, Q>(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
template<glm::length_t L, typename T, glm::qualifier Q, typename = std::enable_if_t<std::is_integral_v<T>>>
|
template<length_t L, typename T, typename F, qualifier Q>
|
||||||
glm::vec<L, float, Q> operator * (const float lhs, const glm::vec<L, T, Q>& rhs)
|
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||||
{
|
vec<L, F, Q> operator / (const vec<L, F, Q>& lhs, const T rhs)
|
||||||
return lhs * glm::vec<L, float, Q>(rhs);
|
{
|
||||||
}
|
return lhs / static_cast<F>(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
template<glm::length_t L, typename T, glm::qualifier Q, typename = std::enable_if_t<std::is_integral_v<T>>>
|
template<length_t L, typename T, typename F, qualifier Q>
|
||||||
glm::vec<L, float, Q> operator * (const glm::vec<L, float, Q>& lhs, const T rhs)
|
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||||
{
|
vec<L, F, Q> operator * (const F lhs, const vec<L, T, Q>& rhs)
|
||||||
return lhs * static_cast<float>(rhs);
|
{
|
||||||
}
|
return lhs * glm::vec<L, F, Q>(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<length_t L, typename F, typename T, qualifier Q>
|
||||||
|
requires (std::is_integral_v<T> && std::is_floating_point_v<F>)
|
||||||
|
vec<L, F, Q> operator * (const vec<L, F, Q>& lhs, const T rhs)
|
||||||
|
{
|
||||||
|
return lhs * static_cast<F>(rhs);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user