Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
prism/engine/math/include/math.hpp

29 lines
904 B
C++
Raw Normal View History

2020-08-11 12:07:21 -04:00
#pragma once
#include "matrix.hpp"
#include "ray.hpp"
2020-08-11 12:07:21 -04:00
#include "transform.hpp"
#include "vector.hpp"
constexpr double PI = 3.141592653589793;
template<typename T> constexpr inline T radians(const T degrees) {
2020-08-11 12:07:21 -04:00
return degrees / static_cast<T>(180) * static_cast<T>(PI);
}
template<typename T> constexpr inline T degrees(const T radians) {
2020-08-11 12:07:21 -04:00
return radians / static_cast<T>(PI) * static_cast<T>(180);
}
template<typename T> constexpr inline bool nearly_equal(const T a, const T b) {
return std::nextafter(a, std::numeric_limits<T>::lowest()) <= b &&
std::nextafter(a, std::numeric_limits<T>::max()) >= b;
2020-08-11 12:07:21 -04:00
}
2021-04-20 12:07:00 -04:00
Matrix4x4 matrix_from_quat(Quaternion quat);
Quaternion quat_from_matrix(Matrix3x3 matrix);
2021-05-12 09:56:44 -04:00
Quaternion euler_to_quat(prism::float3 angle);
prism::float3 quat_to_euler(Quaternion quat);
2021-04-20 12:07:00 -04:00
Matrix4x4 inverse(Matrix4x4 m);
2021-05-12 09:56:44 -04:00
Quaternion angle_axis(float angle, prism::float3 axis);