// // Math.hpp // amoeba // // Created by Timothy Prepscius on 12/30/16. // Copyright © 2016 Timothy Prepscius. All rights reserved. // #pragma once #include "HPoint.hpp" #include "HMatrix.hpp" #include "Vector3.hpp" #include "Vector4.hpp" #include namespace tjp { namespace core { namespace math { template glm::vec<3, T> glm_c(const math::Vector3 &v) { return { v[0], v[1], v[2] }; } template math::Vector3 glm_c(const glm::vec<3, T> &v) { return { v[0], v[1], v[2] }; } template glm::qua glm_c(const math::Vector4 &v) { return { v[0], v[1], v[2], v[3] }; } template math::Vector4 glm_c(const glm::qua &v) { return { v[0], v[1], v[2], v[3] }; } template glm::vec<4, T> glm_c(const math::HPoint &v) { return { v[0], v[1], v[2], v[3] }; } template math::HPoint glm_c(const glm::vec<4, T> &v) { return { v[0], v[1], v[2], v[3] }; } template glm::mat<3, 3, T> glm_c(const math::Matrix3 &m) { return { m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2] } ; } template math::Matrix3 glm_c(const glm::mat<3, 3, T> &m) { return { m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2] } ; } template glm::mat<4, 4, T> glm_c(const math::HMatrix &m) { return { m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3] } ; } template math::HMatrix glm_c(const glm::mat<4, 4, T> &m) { return { m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2][2], m[2][3], m[3][0], m[3][1], m[3][2], m[3][3] } ; } } // namespace } // namespace } // namespace