Rebuild trinity visualizer from bare SDL and OpenGL to using Raylib. Added Code for serial parsing on linux. Current functionality reads incoming quaternion packet data coming in over serial and displays the values and also visualizes with a cube, connect and disconnect is implemented. Essentially rebuild the functionality of the old version with added linux support.

This commit is contained in:
2026-09-13 19:44:26 +02:00
commit 62abf4d5d6
821 changed files with 239694 additions and 0 deletions
+170
View File
@@ -0,0 +1,170 @@
namespace glm
{
template<typename T>
GLM_FUNC_QUALIFIER T (min)(T a, T b, T c)
{
return (glm::min)((glm::min)(a, b), c);
}
template<typename T>
GLM_FUNC_QUALIFIER T (min)(T a, T b, T c, T d)
{
return (glm::min)((glm::min)(a, b), (glm::min)(c, d));
}
template<typename T>
GLM_FUNC_QUALIFIER T (max)(T a, T b, T c)
{
return (glm::max)((glm::max)(a, b), c);
}
template<typename T>
GLM_FUNC_QUALIFIER T (max)(T a, T b, T c, T d)
{
return (glm::max)((glm::max)(a, b), (glm::max)(c, d));
}
# if GLM_HAS_CXX11_STL
using std::fmin;
# else
template<typename T>
GLM_FUNC_QUALIFIER T fmin(T a, T b)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fmin' only accept floating-point input");
if (isnan(a))
return b;
return min(a, b);
}
# endif
template<typename T>
GLM_FUNC_QUALIFIER T (fmin)(T a, T b, T c)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fmin' only accept floating-point input");
if (isnan(a))
return (fmin)(b, c);
if (isnan(b))
return (fmin)(a, c);
if (isnan(c))
return min(a, b);
return (min)(a, b, c);
}
template<typename T>
GLM_FUNC_QUALIFIER T (fmin)(T a, T b, T c, T d)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fmin' only accept floating-point input");
if (isnan(a))
return (fmin)(b, c, d);
if (isnan(b))
return (min)(a, (fmin)(c, d));
if (isnan(c))
return (fmin)(min(a, b), d);
if (isnan(d))
return (min)(a, b, c);
return (min)(a, b, c, d);
}
# if GLM_HAS_CXX11_STL
using std::fmax;
# else
template<typename T>
GLM_FUNC_QUALIFIER T (fmax)(T a, T b)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fmax' only accept floating-point input");
if (isnan(a))
return b;
return (max)(a, b);
}
# endif
template<typename T>
GLM_FUNC_QUALIFIER T (fmax)(T a, T b, T c)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fmax' only accept floating-point input");
if (isnan(a))
return (fmax)(b, c);
if (isnan(b))
return (fmax)(a, c);
if (isnan(c))
return (max)(a, b);
return (max)(a, b, c);
}
template<typename T>
GLM_FUNC_QUALIFIER T (fmax)(T a, T b, T c, T d)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fmax' only accept floating-point input");
if (isnan(a))
return (fmax)(b, c, d);
if (isnan(b))
return (max)(a, (fmax)(c, d));
if (isnan(c))
return (fmax)((max)(a, b), d);
if (isnan(d))
return (max)(a, b, c);
return (max)(a, b, c, d);
}
// fclamp
template<typename genType>
GLM_FUNC_QUALIFIER genType fclamp(genType x, genType minVal, genType maxVal)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'fclamp' only accept floating-point or integer inputs");
return fmin((fmax)(x, minVal), maxVal);
}
template<typename genType>
GLM_FUNC_QUALIFIER genType clamp(genType const& Texcoord)
{
return glm::clamp(Texcoord, static_cast<genType>(0), static_cast<genType>(1));
}
template<typename genType>
GLM_FUNC_QUALIFIER genType repeat(genType const& Texcoord)
{
return glm::fract(Texcoord);
}
template<typename genType>
GLM_FUNC_QUALIFIER genType mirrorClamp(genType const& Texcoord)
{
return glm::fract(glm::abs(Texcoord));
}
template<typename genType>
GLM_FUNC_QUALIFIER genType mirrorRepeat(genType const& Texcoord)
{
genType const Abs = glm::abs(Texcoord);
genType const Clamp = glm::mod(glm::floor(Abs), static_cast<genType>(2));
genType const Floor = glm::floor(Abs);
genType const Rest = Abs - Floor;
genType const Mirror = Clamp + Rest;
return mix(Rest, static_cast<genType>(1) - Rest, Mirror >= static_cast<genType>(1));
}
template<typename genType>
GLM_FUNC_QUALIFIER int iround(genType const& x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'iround' only accept floating-point inputs");
assert(static_cast<genType>(0.0) <= x);
return static_cast<int>(x + static_cast<genType>(0.5));
}
template<typename genType>
GLM_FUNC_QUALIFIER uint uround(genType const& x)
{
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'uround' only accept floating-point inputs");
assert(static_cast<genType>(0.0) <= x);
return static_cast<uint>(x + static_cast<genType>(0.5));
}
}//namespace glm