xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
命名空间 | | 概念 | 类型定义 | 函数 | 变量
xcmath 命名空间参考

Compiler-specific type information handling for MSVC 更多...

命名空间

namespace  concepts
 
namespace  ops
 

struct  __batchHelper
 Metaclassfor constructing a vector from a pack of arguments 更多...
 
struct  __batchHelper< T, len >
 Metaclass for constructing a vector from a pack of arguments 更多...
 
class  complex
 Complex number class template 更多...
 
class  Constant
 
class  Expression
 
class  Fraction
 
class  mat
 Matrix class template 更多...
 
class  Monomial
 
struct  MyStr
 
class  Polynomial
 
class  quaternion
 Quaternion class template 更多...
 
struct  Slice
 Compile-time index sequence for vector slicing operations 更多...
 
struct  static_string
 
class  Symbol
 
struct  tvector
 
struct  tvector<>
 
class  vec
 Vector class template 更多...
 
struct  VecInfo
 

概念

concept  Vec
 Type requirement concept for vector types
 
concept  VecItem
 Concept for valid vector component types
 
concept  TVector
 

类型定义

using complex_f128 = complex< long double >
 
using complex_f64 = complex< double >
 
using complex_f32 = complex< float >
 
using complex_f = complex< float >
 
using complex_i = complex< int32_t >
 
using complex_l = complex< long >
 
using complex_ll = complex< long long >
 
template<typename T >
using vec2 = vec< T, 2 >
 Alias for vec<T, 2>
 
template<typename T >
using vec3 = vec< T, 3 >
 Alias for vec<T, 3>
 
template<typename T >
using vec4 = vec< T, 4 >
 Alias for vec<T, 4>
 
template<size_t _len>
using vecf = vec< float, _len >
 Alias for vec<float, _len>
 
template<size_t _len>
using vecd = vec< double, _len >
 Alias for vec<double, _len>
 
template<size_t _len>
using veci = vec< int, _len >
 Alias for vec<int, _len>
 
template<size_t _len>
using vecui = vec< unsigned int, _len >
 Alias for vec<unsigned int, _len>
 
template<size_t _len>
using vecl = vec< long, _len >
 Alias for vec<long, _len>
 
template<size_t _len>
using vecul = vec< unsigned long, _len >
 Alias for vec<unsigned long, _len>
 
template<size_t _len>
using vecll = vec< long long, _len >
 Alias for vec<long long, _len>
 
template<size_t _len>
using vecull = vec< unsigned long long, _len >
 Alias for vec<unsigned long long, _len>
 
template<size_t _len>
using vecb = vec< bool, _len >
 Alias for vec<bool, _len>
 
using vec2f = vec2< float >
 
using vec3f = vec3< float >
 
using vec4f = vec4< float >
 
using vec2d = vec2< double >
 
using vec3d = vec3< double >
 
using vec4d = vec4< double >
 
using vec2i = vec2< int >
 
using vec3i = vec3< int >
 
using vec4i = vec4< int >
 
using vec2ui = vec2< unsigned int >
 
using vec3ui = vec3< unsigned int >
 
using vec4ui = vec4< unsigned int >
 
using vec2l = vec2< long >
 
using vec3l = vec3< long >
 
using vec4l = vec4< long >
 
using vec2ul = vec2< unsigned long >
 
using vec3ul = vec3< unsigned long >
 
using vec4ul = vec4< unsigned long >
 
using vec2ll = vec2< long long >
 
using vec3ll = vec3< long long >
 
using vec4ll = vec4< long long >
 
using vec2ull = vec2< unsigned long long >
 
using vec3ull = vec3< unsigned long long >
 
using vec4ull = vec4< unsigned long long >
 
using vec2b = vec2< bool >
 
using vec3b = vec3< bool >
 
using vec4b = vec4< bool >
 
template<class _Tp >
using mat1x2 = mat< _Tp, 1, 2 >
 Alias for mat<_Tp, 1, 2>
 
template<class _Tp >
using mat1x3 = mat< _Tp, 1, 3 >
 Alias for mat<_Tp, 1, 3>
 
template<class _Tp >
using mat1x4 = mat< _Tp, 1, 4 >
 Alias for mat<_Tp, 1, 4>
 
template<class _Tp >
using mat2x1 = mat< _Tp, 2, 1 >
 Alias for mat<_Tp, 2, 1>
 
template<class _Tp >
using mat2x2 = mat< _Tp, 2, 2 >
 Alias for mat<_Tp, 2, 2>
 
template<class _Tp >
using mat2x3 = mat< _Tp, 2, 3 >
 Alias for mat<_Tp, 2, 3>
 
template<class _Tp >
using mat2x4 = mat< _Tp, 2, 4 >
 Alias for mat<_Tp, 2, 4>
 
template<class _Tp >
using mat3x1 = mat< _Tp, 3, 1 >
 Alias for mat<_Tp, 3, 1>
 
template<class _Tp >
using mat3x2 = mat< _Tp, 3, 2 >
 Alias for mat<_Tp, 3, 2>
 
template<class _Tp >
using mat3x3 = mat< _Tp, 3, 3 >
 Alias for mat<_Tp, 3, 3>
 
template<class _Tp >
using mat3x4 = mat< _Tp, 3, 4 >
 Alias for mat<_Tp, 3, 4>
 
template<class _Tp >
using mat4x1 = mat< _Tp, 4, 1 >
 Alias for mat<_Tp, 4, 1>
 
template<class _Tp >
using mat4x2 = mat< _Tp, 4, 2 >
 Alias for mat<_Tp, 4, 2>
 
template<class _Tp >
using mat4x3 = mat< _Tp, 4, 3 >
 Alias for mat<_Tp, 4, 3>
 
template<class _Tp >
using mat4x4 = mat< _Tp, 4, 4 >
 Alias for mat<_Tp, 4, 4>
 
template<class _Tp >
using mat3 = mat3x3< _Tp >
 Alias for mat3x3<_Tp>
 
template<class _Tp >
using mat4 = mat4x4< _Tp >
 Alias for mat4x4<_Tp>
 
using mat1x2f = mat1x2< float >
 
using mat1x3f = mat1x3< float >
 
using mat1x4f = mat1x4< float >
 
using mat2x1f = mat2x1< float >
 
using mat2x2f = mat2x2< float >
 
using mat2x3f = mat2x3< float >
 
using mat2x4f = mat2x4< float >
 
using mat3x1f = mat3x1< float >
 
using mat3x2f = mat3x2< float >
 
using mat3x3f = mat3x3< float >
 
using mat3x4f = mat3x4< float >
 
using mat4x1f = mat4x1< float >
 
using mat4x2f = mat4x2< float >
 
using mat4x3f = mat4x3< float >
 
using mat4x4f = mat4x4< float >
 
using mat1x2d = mat1x2< double >
 
using mat1x3d = mat1x3< double >
 
using mat1x4d = mat1x4< double >
 
using mat2x1d = mat2x1< double >
 
using mat2x2d = mat2x2< double >
 
using mat2x3d = mat2x3< double >
 
using mat2x4d = mat2x4< double >
 
using mat3x1d = mat3x1< double >
 
using mat3x2d = mat3x2< double >
 
using mat3x3d = mat3x3< double >
 
using mat3x4d = mat3x4< double >
 
using mat4x1d = mat4x1< double >
 
using mat4x2d = mat4x2< double >
 
using mat4x3d = mat4x3< double >
 
using mat4x4d = mat4x4< double >
 
using mat1x2i = mat1x2< int >
 
using mat1x3i = mat1x3< int >
 
using mat1x4i = mat1x4< int >
 
using mat2x1i = mat2x1< int >
 
using mat2x2i = mat2x2< int >
 
using mat2x3i = mat2x3< int >
 
using mat2x4i = mat2x4< int >
 
using mat3x1i = mat3x1< int >
 
using mat3x2i = mat3x2< int >
 
using mat3x3i = mat3x3< int >
 
using mat3x4i = mat3x4< int >
 
using mat4x1i = mat4x1< int >
 
using mat4x2i = mat4x2< int >
 
using mat4x3i = mat4x3< int >
 
using mat4x4i = mat4x4< int >
 
using mat1x2l = mat1x2< long >
 
using mat1x3l = mat1x3< long >
 
using mat1x4l = mat1x4< long >
 
using mat2x1l = mat2x1< long >
 
using mat2x2l = mat2x2< long >
 
using mat2x3l = mat2x3< long >
 
using mat2x4l = mat2x4< long >
 
using mat3x1l = mat3x1< long >
 
using mat3x2l = mat3x2< long >
 
using mat3x3l = mat3x3< long >
 
using mat3x4l = mat3x4< long >
 
using mat4x1l = mat4x1< long >
 
using mat4x2l = mat4x2< long >
 
using mat4x3l = mat4x3< long >
 
using mat4x4l = mat4x4< long >
 
using mat1x2ul = mat1x2< unsigned long >
 
using mat1x3ul = mat1x3< unsigned long >
 
using mat1x4ul = mat1x4< unsigned long >
 
using mat2x1ul = mat2x1< unsigned long >
 
using mat2x2ul = mat2x2< unsigned long >
 
using mat2x3ul = mat2x3< unsigned long >
 
using mat2x4ul = mat2x4< unsigned long >
 
using mat3x1ul = mat3x1< unsigned long >
 
using mat3x2ul = mat3x2< unsigned long >
 
using mat3x3ul = mat3x3< unsigned long >
 
using mat3x4ul = mat3x4< unsigned long >
 
using mat4x1ul = mat4x1< unsigned long >
 
using mat4x2ul = mat4x2< unsigned long >
 
using mat4x3ul = mat4x3< unsigned long >
 
using mat4x4ul = mat4x4< unsigned long >
 
using mat1x2b = mat1x2< bool >
 
using mat1x3b = mat1x3< bool >
 
using mat1x4b = mat1x4< bool >
 
using mat2x1b = mat2x1< bool >
 
using mat2x2b = mat2x2< bool >
 
using mat2x3b = mat2x3< bool >
 
using mat2x4b = mat2x4< bool >
 
using mat3x1b = mat3x1< bool >
 
using mat3x2b = mat3x2< bool >
 
using mat3x3b = mat3x3< bool >
 
using mat3x4b = mat3x4< bool >
 
using mat4x1b = mat4x1< bool >
 
using mat4x2b = mat4x2< bool >
 
using mat4x3b = mat4x3< bool >
 
using mat4x4b = mat4x4< bool >
 
using mat2f = mat2x2f
 
using mat3f = mat3x3f
 
using mat4f = mat4x4f
 
using mat2d = mat2x2d
 
using mat3d = mat3x3d
 
using mat4d = mat4x4d
 
using mat2i = mat2x2i
 
using mat3i = mat3x3i
 
using mat4i = mat4x4i
 
using mat2l = mat2x2l
 
using mat3l = mat3x3l
 
using mat4l = mat4x4l
 
using mat2ul = mat2x2ul
 
using mat3ul = mat3x3ul
 
using mat4ul = mat4x4ul
 
using mat2b = mat2x2b
 
using mat3b = mat3x3b
 
using mat4b = mat4x4b
 
template<class T , size_t... lens>
using batch = __batchHelper< T, lens... >::Type
 Metafunction for constructing a vector from a pack of arguments
 
typedef std::vector< std::shared_ptr< Constant > > CoefficientPack
 
typedef std::vector< std::shared_ptr< Symbol > > VariablePack
 

函数

xcmath::complex< long long > operator""_i (unsigned long long x)
 
xcmath::complex< long double > operator""_i (long double x)
 
template<class _Tp1 , class... _Tp>
 vec (const _Tp1 &, const _Tp...) -> vec< _Tp1, sizeof...(_Tp)+1 >
 Deduction guide for vec class template
 
template<typename T >
constexpr T radians (T degrees)
 Convert degrees to radians
 
template<typename T >
constexpr T degrees (T radians)
 Convert radians to degrees
 
template<class _Tp , size_t _length = 3, size_t _dim = 4>
requires ((_length == 3 || _length == 4) && (_dim == 4 || _dim == 3))
mat< _Tp, _dim, _dim > rotate (const mat< _Tp, _dim, _dim > &m, _Tp angle, const vec< _Tp, _length > &axis)
 Apply rotation for transform or rotation matrix around an axis
 
template<class _Tp , class _MTp = _Tp, size_t _dim = 3>
requires (std::is_floating_point_v<_Tp> && (_dim == 3 || _dim == 4))
mat< _MTp, _dim, _dim > rotate (const mat< _MTp, _dim, _dim > &m, _Tp angle)
 Apply rotation for 2D transform or rotation matrix around an axis
 
template<class _Tp , class _ATp = _Tp, size_t _dim = 3>
requires (std::is_floating_point_v<_Tp> && std::is_floating_point_v<_ATp>)
mat< _Tp, _dim, _dim > rotate (const mat< _Tp, _dim, _dim > &m, _ATp angle, _Tp x, _Tp y, _Tp z)
 Apply rotation for matrix around an axis specified by coordinates
 
template<class _Tp , size_t _len = 4, size_t _vlen = 3>
requires ((_len == 4 || _len == 3) && _vlen == _len - 1)
constexpr mat< _Tp, _len, _len > translate (const mat< _Tp, _len, _len > &m, const vec< _Tp, _vlen > &v)
 Apply translation for matrix
 
template<class _Tp , size_t _len = 4>
requires (_len == 4 || _len == 3)
constexpr mat< _Tp, _len, _len > translate (const mat< _Tp, _len, _len > &m, const vec< _Tp, _len > &v)
 Apply translation for matrix using a homogenous vector
 
template<class _Tp , class _ATp = _Tp, size_t _dim = 4>
requires (std::is_floating_point_v<_Tp> && std::is_floating_point_v<_ATp> && (_dim == 4 || _dim == 3))
constexpr mat< _Tp, _dim, _dim > scale (const mat< _Tp, _dim, _dim > &m, const vec< _ATp, _dim - 1 > &v)
 Apply translation to a matrix
 
template<class _Tp , class _STp , size_t _dim = 4>
requires (std::is_arithmetic_v<_STp> && (_dim == 4 || _dim == 3))
constexpr mat< _Tp, _dim, _dim > scale (const mat< _Tp, _dim, _dim > &m, const _STp s)
 Scale a matrix by a vector
 
template<class _Tp , class _ItemType >
requires (!std::is_same_v<_Tp, quaternion<_ItemType>>)
auto operator+ (const _Tp &other, const quaternion< _ItemType > &v)
 Quaternion addition operator with scalar on the left
 
template<class _Tp , class _ItemType >
requires (!std::is_same_v<_Tp, quaternion<_ItemType>>)
auto operator- (const _Tp &other, const quaternion< _ItemType > &v)
 Quaternion subtraction operator with scalar on the left
 
constexpr quaternion< int > operator""_qi (unsigned long long i)
 
constexpr quaternion< int > operator""_qj (unsigned long long j)
 
constexpr quaternion< int > operator""_qk (unsigned long long k)
 
constexpr quaternion< float > operator""_qi (long double i)
 
constexpr quaternion< float > operator""_qj (long double j)
 
constexpr quaternion< float > operator""_qk (long double k)
 
template<typename T >
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & operator<< (std::ostream &os, const complex< T > &c)
 
template<typename T , size_t _rows, size_t _cols>
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & operator<< (std::ostream &os, const mat< T, _rows, _cols > &m)
 
template<typename T , size_t _size>
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & operator<< (std::ostream &os, const vec< T, _size > &v)
 
template<typename T >
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & operator<< (std::ostream &os, const quaternion< T > &q)
 

变量

template<size_t _From, size_t _To, size_t _Step = 1>
constexpr auto slice_from_to
 
template<size_t _Start, size_t _Len, size_t _Step = 1>
constexpr auto slice_start_len
 
template<size_t _Len, size_t _Step = 1>
constexpr auto slice_to = slice_from_to<0, (_Step * _Len) - 1, _Step>
 
template<size_t _End, size_t _Len, size_t _Step = 1>
constexpr auto slice_from_end
 
constexpr long double PI
 Pi constant
 
template<class Arg , class... Args>
constexpr size_t VecConstructPackSize
 Metafunction computing total size of vector constructor arguments
 
template<class Arg >
constexpr size_t VecConstructPackSize< Arg >
 Metafunction computing total size of vector constructor arguments
 
template<typename Object >
constexpr auto TypeName
 

详细描述

Compiler-specific type information handling for MSVC

Provides workarounds for MSVC's type system differences

Namespace for extended mathematical utilities

Contains vector implementations, algebraic structures, and related meta-programming utilities

类型定义说明

◆ batch

template<class T , size_t... lens>
using xcmath::batch = typedef __batchHelper<T, lens...>::Type

Metafunction for constructing a vector from a pack of arguments

模板参数
T
lens

在文件 vec.hpp189 行定义.

◆ CoefficientPack

typedef std::vector<std::shared_ptr<Constant> > xcmath::CoefficientPack

在文件 monomial.h11 行定义.

◆ complex_f

using xcmath::complex_f = typedef complex<float>

在文件 complex.hpp92 行定义.

◆ complex_f128

using xcmath::complex_f128 = typedef complex<long double>

在文件 complex.hpp89 行定义.

◆ complex_f32

using xcmath::complex_f32 = typedef complex<float>

在文件 complex.hpp91 行定义.

◆ complex_f64

using xcmath::complex_f64 = typedef complex<double>

在文件 complex.hpp90 行定义.

◆ complex_i

using xcmath::complex_i = typedef complex<int32_t>

在文件 complex.hpp93 行定义.

◆ complex_l

using xcmath::complex_l = typedef complex<long>

在文件 complex.hpp94 行定义.

◆ complex_ll

using xcmath::complex_ll = typedef complex<long long>

在文件 complex.hpp95 行定义.

◆ mat1x2

template<class _Tp >
using xcmath::mat1x2 = typedef mat<_Tp, 1, 2>

Alias for mat<_Tp, 1, 2>

模板参数
_TpType of elements

在文件 declaration.hpp235 行定义.

◆ mat1x2b

using xcmath::mat1x2b = typedef mat1x2<bool>

在文件 declaration.hpp446 行定义.

◆ mat1x2d

using xcmath::mat1x2d = typedef mat1x2<double>

在文件 declaration.hpp382 行定义.

◆ mat1x2f

using xcmath::mat1x2f = typedef mat1x2<float>

在文件 declaration.hpp366 行定义.

◆ mat1x2i

using xcmath::mat1x2i = typedef mat1x2<int>

在文件 declaration.hpp398 行定义.

◆ mat1x2l

using xcmath::mat1x2l = typedef mat1x2<long>

在文件 declaration.hpp414 行定义.

◆ mat1x2ul

using xcmath::mat1x2ul = typedef mat1x2<unsigned long>

在文件 declaration.hpp430 行定义.

◆ mat1x3

template<class _Tp >
using xcmath::mat1x3 = typedef mat<_Tp, 1, 3>

Alias for mat<_Tp, 1, 3>

模板参数
_TpType of elements

在文件 declaration.hpp243 行定义.

◆ mat1x3b

using xcmath::mat1x3b = typedef mat1x3<bool>

在文件 declaration.hpp447 行定义.

◆ mat1x3d

using xcmath::mat1x3d = typedef mat1x3<double>

在文件 declaration.hpp383 行定义.

◆ mat1x3f

using xcmath::mat1x3f = typedef mat1x3<float>

在文件 declaration.hpp367 行定义.

◆ mat1x3i

using xcmath::mat1x3i = typedef mat1x3<int>

在文件 declaration.hpp399 行定义.

◆ mat1x3l

using xcmath::mat1x3l = typedef mat1x3<long>

在文件 declaration.hpp415 行定义.

◆ mat1x3ul

using xcmath::mat1x3ul = typedef mat1x3<unsigned long>

在文件 declaration.hpp431 行定义.

◆ mat1x4

template<class _Tp >
using xcmath::mat1x4 = typedef mat<_Tp, 1, 4>

Alias for mat<_Tp, 1, 4>

模板参数
_TpType of elements

在文件 declaration.hpp251 行定义.

◆ mat1x4b

using xcmath::mat1x4b = typedef mat1x4<bool>

在文件 declaration.hpp448 行定义.

◆ mat1x4d

using xcmath::mat1x4d = typedef mat1x4<double>

在文件 declaration.hpp384 行定义.

◆ mat1x4f

using xcmath::mat1x4f = typedef mat1x4<float>

在文件 declaration.hpp368 行定义.

◆ mat1x4i

using xcmath::mat1x4i = typedef mat1x4<int>

在文件 declaration.hpp400 行定义.

◆ mat1x4l

using xcmath::mat1x4l = typedef mat1x4<long>

在文件 declaration.hpp416 行定义.

◆ mat1x4ul

using xcmath::mat1x4ul = typedef mat1x4<unsigned long>

在文件 declaration.hpp432 行定义.

◆ mat2b

using xcmath::mat2b = typedef mat2x2b

在文件 declaration.hpp477 行定义.

◆ mat2d

using xcmath::mat2d = typedef mat2x2d

在文件 declaration.hpp465 行定义.

◆ mat2f

using xcmath::mat2f = typedef mat2x2f

在文件 declaration.hpp462 行定义.

◆ mat2i

using xcmath::mat2i = typedef mat2x2i

在文件 declaration.hpp468 行定义.

◆ mat2l

using xcmath::mat2l = typedef mat2x2l

在文件 declaration.hpp471 行定义.

◆ mat2ul

using xcmath::mat2ul = typedef mat2x2ul

在文件 declaration.hpp474 行定义.

◆ mat2x1

template<class _Tp >
using xcmath::mat2x1 = typedef mat<_Tp, 2, 1>

Alias for mat<_Tp, 2, 1>

模板参数
_TpType of elements

在文件 declaration.hpp259 行定义.

◆ mat2x1b

using xcmath::mat2x1b = typedef mat2x1<bool>

在文件 declaration.hpp449 行定义.

◆ mat2x1d

using xcmath::mat2x1d = typedef mat2x1<double>

在文件 declaration.hpp385 行定义.

◆ mat2x1f

using xcmath::mat2x1f = typedef mat2x1<float>

在文件 declaration.hpp369 行定义.

◆ mat2x1i

using xcmath::mat2x1i = typedef mat2x1<int>

在文件 declaration.hpp401 行定义.

◆ mat2x1l

using xcmath::mat2x1l = typedef mat2x1<long>

在文件 declaration.hpp417 行定义.

◆ mat2x1ul

using xcmath::mat2x1ul = typedef mat2x1<unsigned long>

在文件 declaration.hpp433 行定义.

◆ mat2x2

template<class _Tp >
using xcmath::mat2x2 = typedef mat<_Tp, 2, 2>

Alias for mat<_Tp, 2, 2>

模板参数
_TpType of elements

在文件 declaration.hpp267 行定义.

◆ mat2x2b

using xcmath::mat2x2b = typedef mat2x2<bool>

在文件 declaration.hpp450 行定义.

◆ mat2x2d

using xcmath::mat2x2d = typedef mat2x2<double>

在文件 declaration.hpp386 行定义.

◆ mat2x2f

using xcmath::mat2x2f = typedef mat2x2<float>

在文件 declaration.hpp370 行定义.

◆ mat2x2i

using xcmath::mat2x2i = typedef mat2x2<int>

在文件 declaration.hpp402 行定义.

◆ mat2x2l

using xcmath::mat2x2l = typedef mat2x2<long>

在文件 declaration.hpp418 行定义.

◆ mat2x2ul

using xcmath::mat2x2ul = typedef mat2x2<unsigned long>

在文件 declaration.hpp434 行定义.

◆ mat2x3

template<class _Tp >
using xcmath::mat2x3 = typedef mat<_Tp, 2, 3>

Alias for mat<_Tp, 2, 3>

模板参数
_TpType of elements

在文件 declaration.hpp275 行定义.

◆ mat2x3b

using xcmath::mat2x3b = typedef mat2x3<bool>

在文件 declaration.hpp451 行定义.

◆ mat2x3d

using xcmath::mat2x3d = typedef mat2x3<double>

在文件 declaration.hpp387 行定义.

◆ mat2x3f

using xcmath::mat2x3f = typedef mat2x3<float>

在文件 declaration.hpp371 行定义.

◆ mat2x3i

using xcmath::mat2x3i = typedef mat2x3<int>

在文件 declaration.hpp403 行定义.

◆ mat2x3l

using xcmath::mat2x3l = typedef mat2x3<long>

在文件 declaration.hpp419 行定义.

◆ mat2x3ul

using xcmath::mat2x3ul = typedef mat2x3<unsigned long>

在文件 declaration.hpp435 行定义.

◆ mat2x4

template<class _Tp >
using xcmath::mat2x4 = typedef mat<_Tp, 2, 4>

Alias for mat<_Tp, 2, 4>

模板参数
_TpType of elements

在文件 declaration.hpp283 行定义.

◆ mat2x4b

using xcmath::mat2x4b = typedef mat2x4<bool>

在文件 declaration.hpp452 行定义.

◆ mat2x4d

using xcmath::mat2x4d = typedef mat2x4<double>

在文件 declaration.hpp388 行定义.

◆ mat2x4f

using xcmath::mat2x4f = typedef mat2x4<float>

在文件 declaration.hpp372 行定义.

◆ mat2x4i

using xcmath::mat2x4i = typedef mat2x4<int>

在文件 declaration.hpp404 行定义.

◆ mat2x4l

using xcmath::mat2x4l = typedef mat2x4<long>

在文件 declaration.hpp420 行定义.

◆ mat2x4ul

using xcmath::mat2x4ul = typedef mat2x4<unsigned long>

在文件 declaration.hpp436 行定义.

◆ mat3

template<class _Tp >
using xcmath::mat3 = typedef mat3x3<_Tp>

Alias for mat3x3<_Tp>

模板参数
_TpType of elements

在文件 declaration.hpp355 行定义.

◆ mat3b

using xcmath::mat3b = typedef mat3x3b

在文件 declaration.hpp478 行定义.

◆ mat3d

using xcmath::mat3d = typedef mat3x3d

在文件 declaration.hpp466 行定义.

◆ mat3f

using xcmath::mat3f = typedef mat3x3f

在文件 declaration.hpp463 行定义.

◆ mat3i

using xcmath::mat3i = typedef mat3x3i

在文件 declaration.hpp469 行定义.

◆ mat3l

using xcmath::mat3l = typedef mat3x3l

在文件 declaration.hpp472 行定义.

◆ mat3ul

using xcmath::mat3ul = typedef mat3x3ul

在文件 declaration.hpp475 行定义.

◆ mat3x1

template<class _Tp >
using xcmath::mat3x1 = typedef mat<_Tp, 3, 1>

Alias for mat<_Tp, 3, 1>

模板参数
_TpType of elements

在文件 declaration.hpp291 行定义.

◆ mat3x1b

using xcmath::mat3x1b = typedef mat3x1<bool>

在文件 declaration.hpp453 行定义.

◆ mat3x1d

using xcmath::mat3x1d = typedef mat3x1<double>

在文件 declaration.hpp389 行定义.

◆ mat3x1f

using xcmath::mat3x1f = typedef mat3x1<float>

在文件 declaration.hpp373 行定义.

◆ mat3x1i

using xcmath::mat3x1i = typedef mat3x1<int>

在文件 declaration.hpp405 行定义.

◆ mat3x1l

using xcmath::mat3x1l = typedef mat3x1<long>

在文件 declaration.hpp421 行定义.

◆ mat3x1ul

using xcmath::mat3x1ul = typedef mat3x1<unsigned long>

在文件 declaration.hpp437 行定义.

◆ mat3x2

template<class _Tp >
using xcmath::mat3x2 = typedef mat<_Tp, 3, 2>

Alias for mat<_Tp, 3, 2>

模板参数
_TpType of elements

在文件 declaration.hpp299 行定义.

◆ mat3x2b

using xcmath::mat3x2b = typedef mat3x2<bool>

在文件 declaration.hpp454 行定义.

◆ mat3x2d

using xcmath::mat3x2d = typedef mat3x2<double>

在文件 declaration.hpp390 行定义.

◆ mat3x2f

using xcmath::mat3x2f = typedef mat3x2<float>

在文件 declaration.hpp374 行定义.

◆ mat3x2i

using xcmath::mat3x2i = typedef mat3x2<int>

在文件 declaration.hpp406 行定义.

◆ mat3x2l

using xcmath::mat3x2l = typedef mat3x2<long>

在文件 declaration.hpp422 行定义.

◆ mat3x2ul

using xcmath::mat3x2ul = typedef mat3x2<unsigned long>

在文件 declaration.hpp438 行定义.

◆ mat3x3

template<class _Tp >
using xcmath::mat3x3 = typedef mat<_Tp, 3, 3>

Alias for mat<_Tp, 3, 3>

模板参数
_TpType of elements

在文件 declaration.hpp307 行定义.

◆ mat3x3b

using xcmath::mat3x3b = typedef mat3x3<bool>

在文件 declaration.hpp455 行定义.

◆ mat3x3d

using xcmath::mat3x3d = typedef mat3x3<double>

在文件 declaration.hpp391 行定义.

◆ mat3x3f

using xcmath::mat3x3f = typedef mat3x3<float>

在文件 declaration.hpp375 行定义.

◆ mat3x3i

using xcmath::mat3x3i = typedef mat3x3<int>

在文件 declaration.hpp407 行定义.

◆ mat3x3l

using xcmath::mat3x3l = typedef mat3x3<long>

在文件 declaration.hpp423 行定义.

◆ mat3x3ul

using xcmath::mat3x3ul = typedef mat3x3<unsigned long>

在文件 declaration.hpp439 行定义.

◆ mat3x4

template<class _Tp >
using xcmath::mat3x4 = typedef mat<_Tp, 3, 4>

Alias for mat<_Tp, 3, 4>

模板参数
_TpType of elements

在文件 declaration.hpp315 行定义.

◆ mat3x4b

using xcmath::mat3x4b = typedef mat3x4<bool>

在文件 declaration.hpp456 行定义.

◆ mat3x4d

using xcmath::mat3x4d = typedef mat3x4<double>

在文件 declaration.hpp392 行定义.

◆ mat3x4f

using xcmath::mat3x4f = typedef mat3x4<float>

在文件 declaration.hpp376 行定义.

◆ mat3x4i

using xcmath::mat3x4i = typedef mat3x4<int>

在文件 declaration.hpp408 行定义.

◆ mat3x4l

using xcmath::mat3x4l = typedef mat3x4<long>

在文件 declaration.hpp424 行定义.

◆ mat3x4ul

using xcmath::mat3x4ul = typedef mat3x4<unsigned long>

在文件 declaration.hpp440 行定义.

◆ mat4

template<class _Tp >
using xcmath::mat4 = typedef mat4x4<_Tp>

Alias for mat4x4<_Tp>

模板参数
_TpType of elements

在文件 declaration.hpp363 行定义.

◆ mat4b

using xcmath::mat4b = typedef mat4x4b

在文件 declaration.hpp479 行定义.

◆ mat4d

using xcmath::mat4d = typedef mat4x4d

在文件 declaration.hpp467 行定义.

◆ mat4f

using xcmath::mat4f = typedef mat4x4f

在文件 declaration.hpp464 行定义.

◆ mat4i

using xcmath::mat4i = typedef mat4x4i

在文件 declaration.hpp470 行定义.

◆ mat4l

using xcmath::mat4l = typedef mat4x4l

在文件 declaration.hpp473 行定义.

◆ mat4ul

using xcmath::mat4ul = typedef mat4x4ul

在文件 declaration.hpp476 行定义.

◆ mat4x1

template<class _Tp >
using xcmath::mat4x1 = typedef mat<_Tp, 4, 1>

Alias for mat<_Tp, 4, 1>

模板参数
_TpType of elements

在文件 declaration.hpp323 行定义.

◆ mat4x1b

using xcmath::mat4x1b = typedef mat4x1<bool>

在文件 declaration.hpp457 行定义.

◆ mat4x1d

using xcmath::mat4x1d = typedef mat4x1<double>

在文件 declaration.hpp393 行定义.

◆ mat4x1f

using xcmath::mat4x1f = typedef mat4x1<float>

在文件 declaration.hpp377 行定义.

◆ mat4x1i

using xcmath::mat4x1i = typedef mat4x1<int>

在文件 declaration.hpp409 行定义.

◆ mat4x1l

using xcmath::mat4x1l = typedef mat4x1<long>

在文件 declaration.hpp425 行定义.

◆ mat4x1ul

using xcmath::mat4x1ul = typedef mat4x1<unsigned long>

在文件 declaration.hpp441 行定义.

◆ mat4x2

template<class _Tp >
using xcmath::mat4x2 = typedef mat<_Tp, 4, 2>

Alias for mat<_Tp, 4, 2>

模板参数
_TpType of elements

在文件 declaration.hpp331 行定义.

◆ mat4x2b

using xcmath::mat4x2b = typedef mat4x2<bool>

在文件 declaration.hpp458 行定义.

◆ mat4x2d

using xcmath::mat4x2d = typedef mat4x2<double>

在文件 declaration.hpp394 行定义.

◆ mat4x2f

using xcmath::mat4x2f = typedef mat4x2<float>

在文件 declaration.hpp378 行定义.

◆ mat4x2i

using xcmath::mat4x2i = typedef mat4x2<int>

在文件 declaration.hpp410 行定义.

◆ mat4x2l

using xcmath::mat4x2l = typedef mat4x2<long>

在文件 declaration.hpp426 行定义.

◆ mat4x2ul

using xcmath::mat4x2ul = typedef mat4x2<unsigned long>

在文件 declaration.hpp442 行定义.

◆ mat4x3

template<class _Tp >
using xcmath::mat4x3 = typedef mat<_Tp, 4, 3>

Alias for mat<_Tp, 4, 3>

模板参数
_TpType of elements

在文件 declaration.hpp339 行定义.

◆ mat4x3b

using xcmath::mat4x3b = typedef mat4x3<bool>

在文件 declaration.hpp459 行定义.

◆ mat4x3d

using xcmath::mat4x3d = typedef mat4x3<double>

在文件 declaration.hpp395 行定义.

◆ mat4x3f

using xcmath::mat4x3f = typedef mat4x3<float>

在文件 declaration.hpp379 行定义.

◆ mat4x3i

using xcmath::mat4x3i = typedef mat4x3<int>

在文件 declaration.hpp411 行定义.

◆ mat4x3l

using xcmath::mat4x3l = typedef mat4x3<long>

在文件 declaration.hpp427 行定义.

◆ mat4x3ul

using xcmath::mat4x3ul = typedef mat4x3<unsigned long>

在文件 declaration.hpp443 行定义.

◆ mat4x4

template<class _Tp >
using xcmath::mat4x4 = typedef mat<_Tp, 4, 4>

Alias for mat<_Tp, 4, 4>

模板参数
_TpType of elements

在文件 declaration.hpp347 行定义.

◆ mat4x4b

using xcmath::mat4x4b = typedef mat4x4<bool>

在文件 declaration.hpp460 行定义.

◆ mat4x4d

using xcmath::mat4x4d = typedef mat4x4<double>

在文件 declaration.hpp396 行定义.

◆ mat4x4f

using xcmath::mat4x4f = typedef mat4x4<float>

在文件 declaration.hpp380 行定义.

◆ mat4x4i

using xcmath::mat4x4i = typedef mat4x4<int>

在文件 declaration.hpp412 行定义.

◆ mat4x4l

using xcmath::mat4x4l = typedef mat4x4<long>

在文件 declaration.hpp428 行定义.

◆ mat4x4ul

using xcmath::mat4x4ul = typedef mat4x4<unsigned long>

在文件 declaration.hpp444 行定义.

◆ VariablePack

typedef std::vector<std::shared_ptr<Symbol> > xcmath::VariablePack

在文件 monomial.h12 行定义.

◆ vec2

template<typename T >
using xcmath::vec2 = typedef vec<T, 2>

Alias for vec<T, 2>

模板参数
TType of elements

在文件 declaration.hpp109 行定义.

◆ vec2b

using xcmath::vec2b = typedef vec2<bool>

在文件 declaration.hpp224 行定义.

◆ vec2d

using xcmath::vec2d = typedef vec2<double>

在文件 declaration.hpp203 行定义.

◆ vec2f

using xcmath::vec2f = typedef vec2<float>

在文件 declaration.hpp200 行定义.

◆ vec2i

using xcmath::vec2i = typedef vec2<int>

在文件 declaration.hpp206 行定义.

◆ vec2l

using xcmath::vec2l = typedef vec2<long>

在文件 declaration.hpp212 行定义.

◆ vec2ll

using xcmath::vec2ll = typedef vec2<long long>

在文件 declaration.hpp218 行定义.

◆ vec2ui

using xcmath::vec2ui = typedef vec2<unsigned int>

在文件 declaration.hpp209 行定义.

◆ vec2ul

using xcmath::vec2ul = typedef vec2<unsigned long>

在文件 declaration.hpp215 行定义.

◆ vec2ull

using xcmath::vec2ull = typedef vec2<unsigned long long>

在文件 declaration.hpp221 行定义.

◆ vec3

template<typename T >
using xcmath::vec3 = typedef vec<T, 3>

Alias for vec<T, 3>

模板参数
TType of elements

在文件 declaration.hpp117 行定义.

◆ vec3b

using xcmath::vec3b = typedef vec3<bool>

在文件 declaration.hpp225 行定义.

◆ vec3d

using xcmath::vec3d = typedef vec3<double>

在文件 declaration.hpp204 行定义.

◆ vec3f

using xcmath::vec3f = typedef vec3<float>

在文件 declaration.hpp201 行定义.

◆ vec3i

using xcmath::vec3i = typedef vec3<int>

在文件 declaration.hpp207 行定义.

◆ vec3l

using xcmath::vec3l = typedef vec3<long>

在文件 declaration.hpp213 行定义.

◆ vec3ll

using xcmath::vec3ll = typedef vec3<long long>

在文件 declaration.hpp219 行定义.

◆ vec3ui

using xcmath::vec3ui = typedef vec3<unsigned int>

在文件 declaration.hpp210 行定义.

◆ vec3ul

using xcmath::vec3ul = typedef vec3<unsigned long>

在文件 declaration.hpp216 行定义.

◆ vec3ull

using xcmath::vec3ull = typedef vec3<unsigned long long>

在文件 declaration.hpp222 行定义.

◆ vec4

template<typename T >
using xcmath::vec4 = typedef vec<T, 4>

Alias for vec<T, 4>

模板参数
TType of elements

在文件 declaration.hpp125 行定义.

◆ vec4b

using xcmath::vec4b = typedef vec4<bool>

在文件 declaration.hpp226 行定义.

◆ vec4d

using xcmath::vec4d = typedef vec4<double>

在文件 declaration.hpp205 行定义.

◆ vec4f

using xcmath::vec4f = typedef vec4<float>

在文件 declaration.hpp202 行定义.

◆ vec4i

using xcmath::vec4i = typedef vec4<int>

在文件 declaration.hpp208 行定义.

◆ vec4l

using xcmath::vec4l = typedef vec4<long>

在文件 declaration.hpp214 行定义.

◆ vec4ll

using xcmath::vec4ll = typedef vec4<long long>

在文件 declaration.hpp220 行定义.

◆ vec4ui

using xcmath::vec4ui = typedef vec4<unsigned int>

在文件 declaration.hpp211 行定义.

◆ vec4ul

using xcmath::vec4ul = typedef vec4<unsigned long>

在文件 declaration.hpp217 行定义.

◆ vec4ull

using xcmath::vec4ull = typedef vec4<unsigned long long>

在文件 declaration.hpp223 行定义.

◆ vecb

template<size_t _len>
using xcmath::vecb = typedef vec<bool, _len>

Alias for vec<bool, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp197 行定义.

◆ vecd

template<size_t _len>
using xcmath::vecd = typedef vec<double, _len>

Alias for vec<double, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp141 行定义.

◆ vecf

template<size_t _len>
using xcmath::vecf = typedef vec<float, _len>

Alias for vec<float, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp133 行定义.

◆ veci

template<size_t _len>
using xcmath::veci = typedef vec<int, _len>

Alias for vec<int, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp149 行定义.

◆ vecl

template<size_t _len>
using xcmath::vecl = typedef vec<long, _len>

Alias for vec<long, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp165 行定义.

◆ vecll

template<size_t _len>
using xcmath::vecll = typedef vec<long long, _len>

Alias for vec<long long, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp181 行定义.

◆ vecui

template<size_t _len>
using xcmath::vecui = typedef vec<unsigned int, _len>

Alias for vec<unsigned int, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp157 行定义.

◆ vecul

template<size_t _len>
using xcmath::vecul = typedef vec<unsigned long, _len>

Alias for vec<unsigned long, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp173 行定义.

◆ vecull

template<size_t _len>
using xcmath::vecull = typedef vec<unsigned long long, _len>

Alias for vec<unsigned long long, _len>

模板参数
_lenLength of the vector

在文件 declaration.hpp189 行定义.

函数说明

◆ degrees()

template<typename T >
constexpr T xcmath::degrees ( radians)
inlineconstexpr

Convert radians to degrees

模板参数
TType of radians
参数
radiansRadians to convert
返回
Equivalent degrees value

在文件 function.hpp37 行定义.

引用了 PI , 以及 radians().

被这些函数引用 radians() , 以及 TEST().

◆ operator""_i() [1/2]

xcmath::complex< long double > xcmath::operator""_i ( long double  x)
inline

在文件 complex.hpp85 行定义.

◆ operator""_i() [2/2]

xcmath::complex< long long > xcmath::operator""_i ( unsigned long long  x)
inline

在文件 complex.hpp82 行定义.

◆ operator""_qi() [1/2]

constexpr quaternion< float > xcmath::operator""_qi ( long double  i)
inlineconstexpr

在文件 quaternion.hpp443 行定义.

◆ operator""_qi() [2/2]

constexpr quaternion< int > xcmath::operator""_qi ( unsigned long long  i)
inlineconstexpr

在文件 quaternion.hpp427 行定义.

◆ operator""_qj() [1/2]

constexpr quaternion< float > xcmath::operator""_qj ( long double  j)
inlineconstexpr

在文件 quaternion.hpp448 行定义.

◆ operator""_qj() [2/2]

constexpr quaternion< int > xcmath::operator""_qj ( unsigned long long  j)
inlineconstexpr

在文件 quaternion.hpp432 行定义.

◆ operator""_qk() [1/2]

constexpr quaternion< float > xcmath::operator""_qk ( long double  k)
inlineconstexpr

在文件 quaternion.hpp453 行定义.

◆ operator""_qk() [2/2]

constexpr quaternion< int > xcmath::operator""_qk ( unsigned long long  k)
inlineconstexpr

在文件 quaternion.hpp437 行定义.

◆ operator+()

template<class _Tp , class _ItemType >
requires (!std::is_same_v<_Tp, quaternion<_ItemType>>)
auto xcmath::operator+ ( const _Tp &  other,
const quaternion< _ItemType > &  v 
)

Quaternion addition operator with scalar on the left

模板参数
_TpType of the scalar
_ItemTypeType of elements in the quaternion
参数
otherScalar value
vQuaternion to add to
返回
Resulting quaternion

在文件 quaternion.hpp339 行定义.

引用了 xcmath::quaternion< _Tp >::i(), xcmath::quaternion< _Tp >::j(), xcmath::quaternion< _Tp >::k() , 以及 xcmath::quaternion< _Tp >::r().

◆ operator-()

template<class _Tp , class _ItemType >
requires (!std::is_same_v<_Tp, quaternion<_ItemType>>)
auto xcmath::operator- ( const _Tp &  other,
const quaternion< _ItemType > &  v 
)

Quaternion subtraction operator with scalar on the left

模板参数
_TpType of the scalar
_ItemTypeType of elements in the quaternion
参数
otherScalar value
vQuaternion to subtract from
返回
Resulting quaternion

在文件 quaternion.hpp359 行定义.

引用了 xcmath::quaternion< _Tp >::i(), xcmath::quaternion< _Tp >::j(), xcmath::quaternion< _Tp >::k() , 以及 xcmath::quaternion< _Tp >::r().

◆ operator<<() [1/4]

template<typename T >
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & xcmath::operator<< ( std::ostream &  os,
const complex< T > &  c 
)

在文件 show.hpp22 行定义.

引用了 xcmath::complex< T >::imag , 以及 xcmath::complex< T >::real.

◆ operator<<() [2/4]

template<typename T , size_t _rows, size_t _cols>
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & xcmath::operator<< ( std::ostream &  os,
const mat< T, _rows, _cols > &  m 
)

在文件 show.hpp35 行定义.

◆ operator<<() [3/4]

template<typename T >
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & xcmath::operator<< ( std::ostream &  os,
const quaternion< T > &  q 
)

◆ operator<<() [4/4]

template<typename T , size_t _size>
requires concepts::OstreamOverwrite<T> || requires(T x) { { x.to_string() } -> std::same_as<std::string>; }
std::ostream & xcmath::operator<< ( std::ostream &  os,
const vec< T, _size > &  v 
)

在文件 show.hpp60 行定义.

◆ radians()

template<typename T >
constexpr T xcmath::radians ( degrees)
inlineconstexpr

Convert degrees to radians

模板参数
TType of degrees
参数
degreesDegrees to convert
返回
Equivalent radians value

在文件 function.hpp25 行定义.

引用了 degrees() , 以及 PI.

被这些函数引用 degrees(), main(), rotate(), rotate(), TEST(), TEST() , 以及 TEST().

◆ rotate() [1/3]

template<class _Tp , class _MTp = _Tp, size_t _dim = 3>
requires (std::is_floating_point_v<_Tp> && (_dim == 3 || _dim == 4))
mat< _MTp, _dim, _dim > xcmath::rotate ( const mat< _MTp, _dim, _dim > &  m,
_Tp  angle 
)

Apply rotation for 2D transform or rotation matrix around an axis

模板参数
_TpType of elements
_dimDimension of the matrix (3 or 4)
参数
mInput matrix to apply rotation
angleRotation angle in degrees
返回
Rotated matrix

在文件 function.hpp87 行定义.

引用了 xcmath::mat< _Tp, _rows, _cols >::eye() , 以及 radians().

◆ rotate() [2/3]

template<class _Tp , class _ATp = _Tp, size_t _dim = 3>
requires (std::is_floating_point_v<_Tp> && std::is_floating_point_v<_ATp>)
mat< _Tp, _dim, _dim > xcmath::rotate ( const mat< _Tp, _dim, _dim > &  m,
_ATp  angle,
_Tp  x,
_Tp  y,
_Tp  z 
)

Apply rotation for matrix around an axis specified by coordinates

模板参数
_TpType of elements
_dimDimension of the matrix (3 or 4)
参数
mInput matrix to apply rotation
angleRotation angle in degrees
xX-coordinate of rotation axis
yY-coordinate of rotation axis
zZ-coordinate of rotation axis
返回
Rotated matrix

在文件 function.hpp109 行定义.

引用了 rotate().

◆ rotate() [3/3]

template<class _Tp , size_t _length = 3, size_t _dim = 4>
requires ((_length == 3 || _length == 4) && (_dim == 4 || _dim == 3))
mat< _Tp, _dim, _dim > xcmath::rotate ( const mat< _Tp, _dim, _dim > &  m,
_Tp  angle,
const vec< _Tp, _length > &  axis 
)

Apply rotation for transform or rotation matrix around an axis

模板参数
_TpType of elements
_lengthLength of the axis vector (3 or 4)
_dimDimension of the matrix (3 or 4)
参数
mInput matrix to apply rotation
angleRotation angle in degrees
axisRotation axis vector
返回
Rotated matrix

在文件 function.hpp54 行定义.

引用了 xcmath::mat< _Tp, _rows, _cols >::eye(), xcmath::vec< _Tp, _length >::normalize() , 以及 radians().

被这些函数引用 rotate(), TEST() , 以及 xcal::render::opengl::utils::SingleComposedMObjectWrapper< T >::update_model_matrix().

◆ scale() [1/2]

template<class _Tp , class _STp , size_t _dim = 4>
requires (std::is_arithmetic_v<_STp> && (_dim == 4 || _dim == 3))
constexpr mat< _Tp, _dim, _dim > xcmath::scale ( const mat< _Tp, _dim, _dim > &  m,
const _STp  s 
)
constexpr

Scale a matrix by a vector

模板参数
_TpThe type of the matrix
_STpThe type of the vector
参数
mThe matrix to scale
vThe vector to scale by
返回
The scaled matrix

在文件 function.hpp180 行定义.

引用了 scale().

◆ scale() [2/2]

template<class _Tp , class _ATp = _Tp, size_t _dim = 4>
requires (std::is_floating_point_v<_Tp> && std::is_floating_point_v<_ATp> && (_dim == 4 || _dim == 3))
constexpr mat< _Tp, _dim, _dim > xcmath::scale ( const mat< _Tp, _dim, _dim > &  m,
const vec< _ATp, _dim - 1 > &  v 
)
constexpr

Apply translation to a matrix

参数
mInput matrix to apply translation
vTranslation vector
返回
Translated matrix

在文件 function.hpp160 行定义.

引用了 xcmath::mat< _Tp, _rows, _cols >::eye().

被这些函数引用 scale(), TEST() , 以及 xcal::render::opengl::utils::SingleComposedMObjectWrapper< T >::update_model_matrix().

◆ translate() [1/2]

template<class _Tp , size_t _len = 4>
requires (_len == 4 || _len == 3)
constexpr mat< _Tp, _len, _len > xcmath::translate ( const mat< _Tp, _len, _len > &  m,
const vec< _Tp, _len > &  v 
)
constexpr

Apply translation for matrix using a homogenous vector

模板参数
_TpType of elements
_lenDimension of the matrix (3 or 4)
参数
mInput matrix to apply translation
vTranslation vector
返回
Translated matrix

在文件 function.hpp145 行定义.

引用了 translate().

◆ translate() [2/2]

template<class _Tp , size_t _len = 4, size_t _vlen = 3>
requires ((_len == 4 || _len == 3) && _vlen == _len - 1)
constexpr mat< _Tp, _len, _len > xcmath::translate ( const mat< _Tp, _len, _len > &  m,
const vec< _Tp, _vlen > &  v 
)
constexpr

Apply translation for matrix

模板参数
_TpType of elements
_lenDimension of the matrix (3 or 4)
参数
mInput matrix to apply translation
vTranslation vector
返回
Translated matrix

在文件 function.hpp125 行定义.

被这些函数引用 TEST(), translate() , 以及 xcal::render::opengl::utils::SingleComposedMObjectWrapper< T >::update_model_matrix().

◆ vec()

template<class _Tp1 , class... _Tp>
xcmath::vec ( const _Tp1 &  ,
const _Tp...   
) -> vec< _Tp1, sizeof...(_Tp)+1 >

Deduction guide for vec class template

模板参数
_Tp1Type of the first element
_TpTypes of remaining elements
返回
vec object with elements of type _Tp1 and length sizeof...(_Tp) + 1

变量说明

◆ PI

constexpr long double xcmath::PI
constexpr
初始值:
=
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Pi constant

在文件 declaration.hpp485 行定义.

被这些函数引用 xcal::render::opengl::object::Circle::create(), degrees(), radians(), TEST(), TEST() , 以及 xcal::camera::TEST().

◆ slice_from_end

template<size_t _End, size_t _Len, size_t _Step = 1>
constexpr auto xcmath::slice_from_end
constexpr
初始值:
=
slice_from_to<_End - (_Len * _Step) + 1, _End, _Step>
constexpr auto slice_from_to

在文件 declaration.hpp53 行定义.

◆ slice_from_to

template<size_t _From, size_t _To, size_t _Step = 1>
constexpr auto xcmath::slice_from_to
constexpr
初始值:
= []() {
if constexpr (_From <= _To)
return [&]<size_t... _Pack>(this auto&& self) {
if constexpr (_Step * sizeof...(_Pack) < _To - _From + 1)
return self.template
operator()<_Pack..., _From + _Step * sizeof...(_Pack)>();
else
return Slice<_Pack...>();
}();
else
return [&]<size_t... _Pack>(this auto&& self) {
if constexpr (_Step * sizeof...(_Pack) < _From - _To + 1)
return self.template
operator()<_Pack..., _From - _Step * sizeof...(_Pack)>();
else
return Slice<_Pack...>();
}();
}()
Compile-time index sequence for vector slicing operations

在文件 declaration.hpp29 行定义.

◆ slice_start_len

template<size_t _Start, size_t _Len, size_t _Step = 1>
constexpr auto xcmath::slice_start_len
constexpr
初始值:
=
slice_from_to<_Start, _Start + (_Step * _Len) - 1, _Step>

在文件 declaration.hpp48 行定义.

◆ slice_to

template<size_t _Len, size_t _Step = 1>
constexpr auto xcmath::slice_to = slice_from_to<0, (_Step * _Len) - 1, _Step>
constexpr

在文件 declaration.hpp51 行定义.

◆ TypeName

template<typename Object >
constexpr auto xcmath::TypeName
constexpr
初始值:
= []<class _Obj = Object>() {
constexpr std::string_view fully_name = __PRETTY_FUNCTION__;
constexpr size_t begin = fully_name.find("<") + 1;
constexpr size_t end = fully_name.rfind(">");
constexpr auto type_name_view = fully_name.substr(begin, end - begin);
return [&]<size_t... index>(std::index_sequence<index...>) {
return static_string<type_name_view[index]..., '\0'>{};
}((std::make_index_sequence<end - begin>{}));
}()

在文件 compiling.hpp28 行定义.

◆ VecConstructPackSize

template<class Arg , class... Args>
constexpr size_t xcmath::VecConstructPackSize
constexpr
初始值:
=
VecConstructPackSize<Arg> + VecConstructPackSize<Args...>
constexpr size_t VecConstructPackSize
Metafunction computing total size of vector constructor arguments
Definition vec.hpp:87

Metafunction computing total size of vector constructor arguments

模板参数
ArgsVariadic argument types (vectors and/or scalars)
返回
Total number of elements when expanded (recursively counts vector elements)

在文件 vec.hpp87 行定义.

◆ VecConstructPackSize< Arg >

template<class Arg >
constexpr size_t xcmath::VecConstructPackSize< Arg >
inlineconstexpr
初始值:
= []() -> size_t {
if constexpr (Vec<Arg>)
return Arg::length;
else
return 1;
}()
Type requirement concept for vector types
Definition vec.hpp:56

Metafunction computing total size of vector constructor arguments

模板参数
Arg

在文件 vec.hpp95 行定义.