mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-29 08:07:29 +01:00
pch migration to modules [wip]
This commit is contained in:
28
utilities/glmHelpers.cppm
Normal file
28
utilities/glmHelpers.cppm
Normal file
@@ -0,0 +1,28 @@
|
||||
module;
|
||||
#include <cmath>
|
||||
|
||||
export module eu07.utilities.glmhelpers;
|
||||
import eu07.glm;
|
||||
|
||||
export {
|
||||
|
||||
inline glm::dmat4 BasisChange(glm::dvec3 u, glm::dvec3 v, glm::dvec3 n)
|
||||
{
|
||||
return glm::dmat4{glm::dvec4(u.x, v.x, n.x, 0.0), glm::dvec4(u.y, v.y, n.y, 0.0), glm::dvec4(u.z, v.z, n.z, 0.0), glm::dvec4(0.0, 0.0, 0.0, 1.0)}; // 4 columns; first rows: u, v, n
|
||||
}
|
||||
|
||||
inline glm::dmat4 BasisChange(glm::dvec3 v, glm::dvec3 n)
|
||||
{
|
||||
glm::dvec3 u = glm::cross(v, n);
|
||||
return BasisChange(u, v, n);
|
||||
}
|
||||
|
||||
template <typename T> inline glm::vec<3, T> RotateY(const glm::vec<3, T> &v, T angle)
|
||||
{
|
||||
T s = std::sin(angle);
|
||||
T c = std::cos(angle);
|
||||
|
||||
return glm::vec<3, T>(c * v.x + s * v.z, v.y, c * v.z - s * v.x);
|
||||
}
|
||||
|
||||
} // export
|
||||
Reference in New Issue
Block a user