2026-01-06 16:27:19 +08:00
|
|
|
#pragma once
|
|
|
|
|
#include <stdexcept>
|
2026-01-09 16:40:30 +08:00
|
|
|
#include <cinttypes>
|
2026-01-08 19:23:19 +08:00
|
|
|
#include <array> // Include array for std::array::at
|
2026-01-06 16:27:19 +08:00
|
|
|
|
2026-01-09 16:40:30 +08:00
|
|
|
namespace basalt::shared::math {
|
2026-01-06 16:27:19 +08:00
|
|
|
|
|
|
|
|
using FloatPoint = float;
|
2026-01-09 16:40:30 +08:00
|
|
|
using Index = std::uint32_t;
|
|
|
|
|
|
|
|
|
|
struct Triangle {
|
|
|
|
|
Index i, j, k;
|
|
|
|
|
|
|
|
|
|
Index& operator[](size_t index);
|
|
|
|
|
const Index& operator[](size_t index) const;
|
|
|
|
|
};
|
2026-01-06 16:27:19 +08:00
|
|
|
|
|
|
|
|
struct Vector3 {
|
|
|
|
|
FloatPoint x, y, z;
|
2026-01-08 19:23:19 +08:00
|
|
|
|
|
|
|
|
FloatPoint& operator[](size_t index);
|
|
|
|
|
const FloatPoint& operator[](size_t index) const;
|
2026-01-06 16:27:19 +08:00
|
|
|
};
|
2026-01-08 19:23:19 +08:00
|
|
|
|
2026-01-09 16:40:30 +08:00
|
|
|
struct Quaternion {
|
2026-01-06 16:27:19 +08:00
|
|
|
FloatPoint x, y, z, w;
|
2026-01-08 19:23:19 +08:00
|
|
|
|
|
|
|
|
FloatPoint& operator[](size_t index);
|
|
|
|
|
const FloatPoint& operator[](size_t index) const;
|
2026-01-06 16:27:19 +08:00
|
|
|
};
|
2026-01-08 19:23:19 +08:00
|
|
|
|
2026-01-09 16:40:30 +08:00
|
|
|
//struct Vector4 {
|
|
|
|
|
// FloatPoint x, y, z, w;
|
|
|
|
|
|
|
|
|
|
// FloatPoint& operator[](size_t index);
|
|
|
|
|
// const FloatPoint& operator[](size_t index) const;
|
|
|
|
|
//};
|
|
|
|
|
|
|
|
|
|
//struct Matrix4x4 {
|
|
|
|
|
//private:
|
|
|
|
|
// std::array<Vector4, 4> data; // Use std::array instead of raw array for .at() method
|
|
|
|
|
|
|
|
|
|
//public:
|
|
|
|
|
// Vector4& operator[](size_t index);
|
|
|
|
|
// const Vector4& operator[](size_t index) const;
|
|
|
|
|
//};
|
|
|
|
|
//
|
|
|
|
|
//#define NOT_IMPLEMENTED throw std::logic_error("not implemented function");
|
|
|
|
|
//
|
|
|
|
|
// template<typename TNum, typename TVec>
|
|
|
|
|
// struct Vector3Traits {};
|
|
|
|
|
//
|
|
|
|
|
// template<typename TNum, typename TMat>
|
|
|
|
|
// struct Matrix4x4Traits {};
|
|
|
|
|
//
|
|
|
|
|
//#undef NOT_IMPLEMENTED
|
|
|
|
|
|
|
|
|
|
} // namespace basalt::shared::math
|