/** * @file MathTypes.h * @brief 数学常量与 DirectX 数学类型别名集合。 * @details * 统一定义引擎常用数学基础元素: * - 常量:pi、two_pi、epsilon; * - 向量/矩阵别名:v2/v3/v4、m3x3/m4x4 等; * - 与 Win64 下 DirectXMath 类型的映射与对齐变体。 */ #pragma once #include "CommonHeader.h" namespace XEngine::math { //constexpr long double pi = 3.141592653589793238462643383279L; /** * @brief 圆周率常量。 */ constexpr float pi = 3.1415927f; /** * @brief 两倍圆周率常量。 */ constexpr float two_pi = 6.2831853f; /** * @brief 浮点比较容差常量。 */ constexpr float epsilon = 1e-5f; #if defined(_WIN64) /** * @brief DirectXMath 向量类型别名。 * @details * - 无 A 后缀类型使用常规布局; * - A 后缀类型要求 16 字节对齐,适合 SIMD 对齐访问场景。 */ using v2 = DirectX::XMFLOAT2; using v2a = DirectX::XMFLOAT2A; using v3 = DirectX::XMFLOAT3; using v3a = DirectX::XMFLOAT3A; using v4 = DirectX::XMFLOAT4; using v4a = DirectX::XMFLOAT4A; /** * @brief DirectXMath 整型向量别名。 */ using u32v2 = DirectX::XMUINT2; using u32v3 = DirectX::XMUINT3; using u32v4 = DirectX::XMUINT4; using s32v2 = DirectX::XMINT2; using s32v3 = DirectX::XMINT3; using s32v4 = DirectX::XMINT4; /** * @brief 标量浮点向量别名。 */ using f32v2 = DirectX::XMFLOAT2; using f32v3 = DirectX::XMFLOAT3; using f32v4 = DirectX::XMFLOAT4; /** * @brief DirectXMath 矩阵与寄存器向量别名。 */ using Vec4 = DirectX::XMVECTOR; using Mat4 = DirectX::XMMATRIX; using Mat3 = DirectX::XMFLOAT3X3; using Mat4f = DirectX::XMFLOAT4X4; using m3x3 = DirectX::XMFLOAT3X3; using m4x4 = DirectX::XMFLOAT4X4; using m4x4a = DirectX::XMFLOAT4X4A; using vector4 = DirectX::XMVECTOR; using MAT4 = DirectX::XMMATRIX; using vector = DirectX::XMVECTOR; using Quat = DirectX::XMVECTOR; #endif // (_WIN64) }