Files
DX12/Engine/Utilities/MathTypes.h
2026-03-19 18:27:49 +08:00

81 lines
1.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @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)
}