|
| template<typename T, size_t N> |
| void | dl::Numeric::Min (Array< T, N > &container) |
| | 返回的是最小正数(假设有符号)
|
| |
| template<typename T, size_t N> |
| void | dl::Numeric::Max (Array< T, N > &container) |
| |
| template<typename T> |
| constexpr bool | dl::Math::IsOutRange (T x, T a, T b) |
| | 判断数值是否越界(前闭后开)
|
| |
| constexpr float | dl::Math::Radian2Angle (float radin) |
| | 弧度转角度
|
| |
| constexpr float | dl::Math::Angle2Radian (float angle) |
| | 角度转弧度
|
| |
| constexpr void | dl::Math::RangeRadian (std::array< float, 2 > &arr) |
| |
| uint32_t | dl::Math::ByteReverse (uint32_t x) |
| | 翻转字节序
|
| |
| template<typename T> |
| constexpr T | dl::Math::Pow (T x, T n) |
| | 返回x的n次方
|
| |
| constexpr uint64_t | dl::Math::Pow64 (uint64_t x, uint8_t n) |
| |
| constexpr uint32_t | dl::Math::Pow32 (uint32_t x, uint8_t n) |
| |
| constexpr uint64_t | dl::Math::CeilToPow2 (uint64_t &&x) |
| |
| constexpr uint32_t | dl::Math::CeilToPow2 (uint32_t &&x) |
| |
| template<typename T> |
| T | dl::Math::CeilToPow2 (const T &x) |
| | 向上取2的幂次
|
| |
| float | dl::Math::RSqrt (float x) |
| | 返回平方根的倒数
|
| |
| template<size_t N> |
| void | dl::Math::NormalizeFast (Array< float, N > &v) |
| | 向量单位化,精度低速度快
|
| |
| template<IsUnsigned T0, IsSigned T1> |
| T0 | dl::Math::AddU (T0 a, T1 b) |
| | 无符号 加 有符号,防止小于0
|
| |
| template<IsUnsigned T0, IsSigned T1, size_t N> |
| void | dl::Math::AddU (Array< T0, N > &a, const Array< T1, N > &b) |
| | 无符号 加 有符号,负数转为0
|
| |
| template<IsUnsigned T0, IsSigned T1, size_t N> |
| Array< T0, N > | dl::Math::AddU (const Array< T0, N > &a, const Array< T1, N > &b) |
| |
| template<IsUnsigned T0, IsSigned T1> |
| bool | dl::Math::AddUCheck (T0 a, T1 b, T0 &ret) |
| | 无符号 加 有符号,检查负数
|
| |
| template<IsUnsigned T0, IsSigned T1, size_t N> |
| bool | dl::Math::AddUCheck (const Array< T0, N > &a, const Array< T1, N > &b, const Array< T0, N > &ret) |
| | 无符号 加 有符号,检查负数
|
| |
| template<IsUnsigned T> |
| T | dl::Math::SubU (T a, T b) |
| | 无符号类型相减,负数转为0
|
| |
| template<IsUnsigned T0, IsSigned T1> |
| T0 | dl::Math::SubU (T0 a, T1 b) |
| | 无符号减有符号,结果负数转为0
|
| |
| template<IsUnsigned T, size_t N> |
| Array< T, N > | dl::Math::SubU (const Array< T, N > &a, const Array< T, N > &b) |
| | 无符号类型相减,负数转为0
|
| |
| template<IsUnsigned T0, IsSigned T1, size_t N> |
| Array< T0, N > | dl::Math::SubU (const Array< T0, N > &a, const Array< T1, N > &b) |
| | 无符号减有符号,负数转为0
|
| |
| template<IsUnsigned T> |
| T | dl::Math::DisU (T a, T b) |
| | 返回无符号类型的差值
|
| |
| template<IsUnsigned T, size_t N> |
| Array< T, N > | dl::Math::DisU (const Array< T, N > &a, const Array< T, N > &b) |
| | 返回无符号类型的差值
|
| |
| template<typename T> |
| T | dl::Math::DistancePow2 (const Array< T, 2 > &a) |
| | 返回 向量 距离的平方
|
| |
| template<typename T> |
| T | dl::Math::DistancePow2 (const Array< T, 3 > &a) |
| |
| template<typename T> |
| T | dl::Math::DistancePow2 (const Array< T, 4 > &a) |
| |
| template<typename T> |
| T | dl::Math::Distance (const Array< T, 2 > &a) |
| |
| template<typename T> |
| T | dl::Math::Distance (const Array< T, 3 > &a) |
| |
| template<typename T> |
| T | dl::Math::Distance (const Array< T, 4 > &a) |
| |
| template<IsSigned T> |
| T | dl::Math::DistancePow2 (const Array< T, 2 > &a, const Array< T, 2 > &b) |
| | 返回 距离的平方
|
| |
| template<IsUnsigned T> |
| T | dl::Math::DistancePow2U (const Array< T, 2 > &a, const Array< T, 2 > &b) |
| | 返回 距离的平方
|
| |
| template<IsUnsigned T> |
| T | dl::Math::DistanceU (const Array< T, 2 > &a, const Array< T, 2 > &b) |
| | 返回 距离
|
| |
| template<IsSigned T, size_t N> |
| void | dl::Math::Normalize (Array< T, N > &v) |
| | 向量单位化
|
| |
| template<IsSigned T, size_t N> |
| Array< T, N > | dl::Math::Normalize (const Array< T, N > &v) |
| |
| std::vector< PointU > | dl::Math::GetCircle (const Size &size, const PointU &xy, unsigned rad) |
| | 返回圆形范围的节点,考虑越界
|
| |
| std::vector< Point > | dl::Math::GetCircle (const Point &xy, unsigned rad) |
| | 返回圆形范围的节点,不考虑越界
|
| |
| constexpr double | dl::Math::PI (unsigned n=1, unsigned d=1) |
| | 返回PI的分数
|
| |
| constexpr float | dl::Math::PIF (unsigned n=1, unsigned d=1) |
| |
| template<IsReal T> |
| constexpr T | dl::Math::AlignF (T x, T align) |
| | RGP资源下标转方向
|
| |
| template<IsUnsigned T> |
| constexpr T | dl::Math::Align (T x, T align) |
| | 对齐align的倍数
|
| |
| constexpr unsigned | dl::Math::IsPow2 (unsigned x) |
| | 是否2的幂
|
| |
| constexpr unsigned | dl::Math::AlignPow2 (unsigned x, unsigned align) |
| | 对齐align的倍数
|
| |
| constexpr unsigned | dl::Math::div_found (unsigned n, unsigned d) |
| | 无符号除法,返回四舍五入结果
|
| |
| constexpr unsigned | dl::Math::div_found_fast (unsigned n, unsigned d) |
| | 无符号除法,返回四舍五入结果
|
| |
| constexpr float | dl::Math::OffsetOrder (float order, int u=1, int v=0, int w=0) |
| | 偏移order
|
| |
| constexpr Float | dl::Math::CrossProduct (const Position2 &a, const Position2 &b) |
| | 叉乘(四指指向a,弯向b,大拇指指向c)
|
| |
| constexpr Position3 | dl::Math::CrossProduct (const Position3 &a, const Position3 &b) |
| |
| template<typename T, size_t N> |
| constexpr T | dl::Math::DotProduct (const Array< T, N > &a, const Array< T, N > &b) |
| | 点乘
|
| |
| Position4 | dl::Math::Slerp (const Position4 &q0, const Position4 &q1, const Float &t) |
| | 球面线性插值
|
| |
| template<typename C> |
| constexpr auto | dl::Math::DistanceDiagonal (const C &p0, const C &p1) |
| | 纹理区域转uv
|
| |
| std::vector< Point > | dl::Math::DrawLineLerp (const Point &p0, const Point &p1) |
| | 线性插值 画线算法
|
| |
| std::vector< Point > | dl::Math::DrawLineBresenham (const Point &p0, const Point &p1) |
| | bresenham 画线算法
|
| |
| std::vector< Point > | dl::Math::DrawLineOrth (const Point &p0, const Point &p1) |
| | 正交 画线算法
|
| |
| std::vector< Point > | dl::Math::DrawLineCover (const Point &p0, const Point &p1) |
| | 覆盖 画线算法
|
| |
| void | dl::Math::MergePath (std::list< Point > &list_pos) |
| | 路径合并(网格路径)
|
| |
| template<typename F> |
| void | dl::Math::MergePathDirect (std::list< Point > &list_pos, F func_pass) |
| | 路径合并(网格路径)
|
| |
| template<typename T> |
| constexpr T | dl::Math::GetQuadSize (const Array< T, 4 > &quad) |
| | 返回 Quad 的大小
|
| |
| template<typename T> |
| constexpr Array< T, 3 > | dl::Math::GetQuadTriangle0 (const Array< T, 4 > &quad) |
| | 返回 Quad的三角形
|
| |
| template<typename T> |
| constexpr Array< T, 3 > | dl::Math::GetQuadTriangle1 (const Array< T, 4 > &quad) |
| |
| template<typename T> |
| constexpr bool | dl::Math::IsRectValid (const Array< T, 4 > &rect) |
| | 判断 矩形 是否有效
|
| |
| template<typename T> |
| constexpr bool | dl::Math::IsRectEmpty (const Array< T, 4 > &rect) |
| | 判断 矩形 是否空
|
| |
| template<typename T> |
| constexpr bool | dl::Math::IsRectInSize (const Array< T, 4 > &rect, const Size &size) |
| | 判断 矩形 在 大小 内,首先它必须是有效的矩形
|
| |
| constexpr bool | dl::Math::IsXyInSize (const Point &xy, const Size &size) |
| | 判断 点是否在大小内
|
| |
| constexpr bool | dl::Math::IsXyInRect (const Point &xy, const Rect &rect) |
| | 判断 点是否在矩形内
|
| |
| constexpr bool | dl::Math::IsTriangle (const Triangle &triangle) |
| | 判断是否三角形
|
| |
| constexpr bool | dl::Math::IsDotInTriangle (const Position &dot, const Triangle &triangle) |
| | 判断点是否在三角形内(包含边)
|
| |
| constexpr bool | dl::Math::IsDotInQuad (const Position &dot, const Quad &quad) |
| | 判断点是否在四边形内(包含边)
|
| |
| constexpr Position | dl::Math::CreatePositionByRatioGoldW (Float w) |
| | 判断点是否在凸四边形内
|
| |
| template<typename T, typename F> |
| void | dl::Math::GetRectTrim (F func, Array< T, 4 > &rect) |
| | 裁切图像、网格
|
| |
| template<typename T> |
| void | dl::Math::ExtendRectLeft (T min_left, Array< T, 4 > &rect, T extend=1) |
| | 向左拓展矩形
|
| |
| template<typename T> |
| void | dl::Math::ExtendRectTop (T min_top, Array< T, 4 > &rect, T extend=1) |
| | 向上拓展矩形
|
| |
| template<typename T> |
| void | dl::Math::ExtendRectRight (T max_right, Array< T, 4 > &rect, T extend=1) |
| | 向右拓展矩形
|
| |
| template<typename T> |
| void | dl::Math::ExtendRectBottom (T max_bottom, Array< T, 4 > &rect, T extend=1) |
| | 向下拓展矩形
|
| |
| template<typename T> |
| void | dl::Math::ExtendRect (const Array< T, 4 > &rect_big, Array< T, 4 > &rect, T extend=1) |
| | 拓展矩形
|
| |
| template<typename T> |
| void | dl::Math::ExtendRect (const Array< T, 2 > &size, Array< T, 4 > &rect, T extend=1) |
| | 拓展矩形
|
| |
| template<typename T> |
| void | dl::Math::ExtendRectRB (const Array< T, 2 > &size, Array< T, 4 > &rect, T extend=1) |
| | 向右下拓展矩形
|
| |
| unsigned | dl::Math::GetCircleNumMax (unsigned rad) |
| | 返回圆所占格子数(GetCircle函数使用)
|
| |
| void | dl::Math::RingX::Clamp (const Size &size, PointU &xy) |
| | 限制到大小内
|
| |
| bool | dl::Math::RingX::Clamp (const Size &size, Point xy, PointU &out_xy) |
| | 限制到大小内
|
| |
| unsigned | dl::Math::RingX::DistancePow2NoCheck (const Size &size, const PointU &a, const PointU &b) |
| | 返回 距离,x轴为环形
|
| |
| unsigned | dl::Math::RingX::Distance (const Size &size, const PointU &a, const PointU &b) |
| | 返回 距离,x轴为环形
|
| |
| std::vector< PointU > | dl::Math::RingX::GetCircle (const Size &size, const PointU &xy, unsigned rad) |
| | 返回圆形范围的节点,x轴为环形
|
| |
| std::vector< PointU > | dl::Math::RingX::Diffusion (const Size &size, const PointU &xy, unsigned count, FnDiffusionCheck func_valid, FnDiffusionCb func_cb) |
| | 扩散遍历
|
| |
| constexpr double | dl::Math::DegreesToRadians (double deg) |
| | 将角度转为弧度
|
| |
| constexpr double | dl::Math::RadiansToDegrees (double rad) |
| | 将弧度转为角度
|
| |
| constexpr bool | dl::Math::IsLeapYear (int year) |
| |
| constexpr int | dl::Math::GetMouthDayNum (int year, int mouth) |
| |
| double | dl::Math::GetSolarDeclination (int day) |
| | 计算太阳赤纬(太阳直射点纬度)
|
| |
| double | dl::Math::GetSolarElevation (double latitude, double declination) |
| | 计算正午太阳高度角
|
| |
| int | dl::Math::GetSeason (int day, double latitude) |
| | 返回季节
|
| |
| double | dl::Math::GetBaseTemperature (double latitude, int day) |
| | 基于纬度估算海平面基准温度(℃)
|
| |