mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-16 22:19:51 +07:00
add unit_init ctors
This commit is contained in:
@@ -19,13 +19,13 @@
|
||||
|
||||
namespace vmath_hpp
|
||||
{
|
||||
template < typename T > inline constexpr vec<T, 2> zero2{T{0}, T{0}};
|
||||
template < typename T > inline constexpr vec<T, 3> zero3{T{0}, T{0}, T{0}};
|
||||
template < typename T > inline constexpr vec<T, 4> zero4{T{0}, T{0}, T{0}, T{0}};
|
||||
template < typename T > inline constexpr vec<T, 2> zero2{zero_init};
|
||||
template < typename T > inline constexpr vec<T, 3> zero3{zero_init};
|
||||
template < typename T > inline constexpr vec<T, 4> zero4{zero_init};
|
||||
|
||||
template < typename T > inline constexpr vec<T, 2> unit2{T{1}, T{1}};
|
||||
template < typename T > inline constexpr vec<T, 3> unit3{T{1}, T{1}, T{1}};
|
||||
template < typename T > inline constexpr vec<T, 4> unit4{T{1}, T{1}, T{1}, T{1}};
|
||||
template < typename T > inline constexpr vec<T, 2> unit2{unit_init};
|
||||
template < typename T > inline constexpr vec<T, 3> unit3{unit_init};
|
||||
template < typename T > inline constexpr vec<T, 4> unit4{unit_init};
|
||||
|
||||
template < typename T > inline constexpr vec<T, 2> unit2_x{T{1}, T{0}};
|
||||
template < typename T > inline constexpr vec<T, 2> unit2_y{T{0}, T{1}};
|
||||
@@ -39,52 +39,20 @@ namespace vmath_hpp
|
||||
template < typename T > inline constexpr vec<T, 4> unit4_z{T{0}, T{0}, T{1}, T{0}};
|
||||
template < typename T > inline constexpr vec<T, 4> unit4_w{T{0}, T{0}, T{0}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 2> zero2x2{
|
||||
T{0}, T{0},
|
||||
T{0}, T{0}};
|
||||
template < typename T > inline constexpr mat<T, 2> zero2x2{zero_init};
|
||||
template < typename T > inline constexpr mat<T, 3> zero3x3{zero_init};
|
||||
template < typename T > inline constexpr mat<T, 4> zero4x4{zero_init};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 3> zero3x3{
|
||||
T{0}, T{0}, T{0},
|
||||
T{0}, T{0}, T{0},
|
||||
T{0}, T{0}, T{0}};
|
||||
template < typename T > inline constexpr mat<T, 2> unit2x2{unit_init};
|
||||
template < typename T > inline constexpr mat<T, 3> unit3x3{unit_init};
|
||||
template < typename T > inline constexpr mat<T, 4> unit4x4{unit_init};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 4> zero4x4{
|
||||
T{0}, T{0}, T{0}, T{0},
|
||||
T{0}, T{0}, T{0}, T{0},
|
||||
T{0}, T{0}, T{0}, T{0},
|
||||
T{0}, T{0}, T{0}, T{0}};
|
||||
template < typename T > inline constexpr mat<T, 2> identity2x2{identity_init};
|
||||
template < typename T > inline constexpr mat<T, 3> identity3x3{identity_init};
|
||||
template < typename T > inline constexpr mat<T, 4> identity4x4{identity_init};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 2> unit2x2{
|
||||
T{1}, T{1},
|
||||
T{1}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 3> unit3x3{
|
||||
T{1}, T{1}, T{1},
|
||||
T{1}, T{1}, T{1},
|
||||
T{1}, T{1}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 4> unit4x4{
|
||||
T{1}, T{1}, T{1}, T{1},
|
||||
T{1}, T{1}, T{1}, T{1},
|
||||
T{1}, T{1}, T{1}, T{1},
|
||||
T{1}, T{1}, T{1}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 2> identity2x2{
|
||||
T{1}, T{0},
|
||||
T{0}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 3> identity3x3{
|
||||
T{1}, T{0}, T{0},
|
||||
T{0}, T{1}, T{0},
|
||||
T{0}, T{0}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr mat<T, 4> identity4x4{
|
||||
T{1}, T{0}, T{0}, T{0},
|
||||
T{0}, T{1}, T{0}, T{0},
|
||||
T{0}, T{0}, T{1}, T{0},
|
||||
T{0}, T{0}, T{0}, T{1}};
|
||||
|
||||
template < typename T > inline constexpr qua<T> qidentity{T{0}, T{0}, T{0}, T{1}};
|
||||
template < typename T > inline constexpr qua<T> qzero{zero_init};
|
||||
template < typename T > inline constexpr qua<T> qidentity{identity_init};
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -46,6 +46,9 @@ namespace vmath_hpp
|
||||
struct zero_init_t { explicit zero_init_t() = default; };
|
||||
inline constexpr zero_init_t zero_init{};
|
||||
|
||||
struct unit_init_t { explicit unit_init_t() = default; };
|
||||
inline constexpr unit_init_t unit_init{};
|
||||
|
||||
struct identity_init_t { explicit identity_init_t() = default; };
|
||||
inline constexpr identity_init_t identity_init{};
|
||||
}
|
||||
|
||||
@@ -25,17 +25,10 @@ namespace vmath_hpp::detail
|
||||
constexpr mat_base()
|
||||
: mat_base(identity_init) {}
|
||||
|
||||
constexpr explicit mat_base(uninit_t) {}
|
||||
|
||||
constexpr explicit mat_base(zero_init_t)
|
||||
: rows{
|
||||
{T{0}, T{0}},
|
||||
{T{0}, T{0}}} {}
|
||||
|
||||
constexpr explicit mat_base(identity_init_t)
|
||||
: rows{
|
||||
{T{1}, T{0}},
|
||||
{T{0}, T{1}}} {}
|
||||
constexpr mat_base(uninit_t) {}
|
||||
constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init} {}
|
||||
constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init} {}
|
||||
constexpr mat_base(identity_init_t) : mat_base{T{1}} {}
|
||||
|
||||
constexpr explicit mat_base(T d)
|
||||
: rows{
|
||||
@@ -69,19 +62,10 @@ namespace vmath_hpp::detail
|
||||
constexpr mat_base()
|
||||
: mat_base(identity_init) {}
|
||||
|
||||
constexpr explicit mat_base(uninit_t) {}
|
||||
|
||||
constexpr explicit mat_base(zero_init_t)
|
||||
: rows{
|
||||
{T{0}, T{0}, T{0}},
|
||||
{T{0}, T{0}, T{0}},
|
||||
{T{0}, T{0}, T{0}}} {}
|
||||
|
||||
constexpr explicit mat_base(identity_init_t)
|
||||
: rows{
|
||||
{T{1}, T{0}, T{0}},
|
||||
{T{0}, T{1}, T{0}},
|
||||
{T{0}, T{0}, T{1}}} {}
|
||||
constexpr mat_base(uninit_t) {}
|
||||
constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init, zero_init} {}
|
||||
constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init, unit_init} {}
|
||||
constexpr mat_base(identity_init_t) : mat_base{T{1}} {}
|
||||
|
||||
constexpr explicit mat_base(T d)
|
||||
: rows{
|
||||
@@ -141,21 +125,10 @@ namespace vmath_hpp::detail
|
||||
constexpr mat_base()
|
||||
: mat_base(identity_init) {}
|
||||
|
||||
constexpr explicit mat_base(uninit_t) {}
|
||||
|
||||
constexpr explicit mat_base(zero_init_t)
|
||||
: rows{
|
||||
{T{0}, T{0}, T{0}, T{0}},
|
||||
{T{0}, T{0}, T{0}, T{0}},
|
||||
{T{0}, T{0}, T{0}, T{0}},
|
||||
{T{0}, T{0}, T{0}, T{0}}} {}
|
||||
|
||||
constexpr explicit mat_base(identity_init_t)
|
||||
: rows{
|
||||
{T{1}, T{0}, T{0}, T{0}},
|
||||
{T{0}, T{1}, T{0}, T{0}},
|
||||
{T{0}, T{0}, T{1}, T{0}},
|
||||
{T{0}, T{0}, T{0}, T{1}}} {}
|
||||
constexpr mat_base(uninit_t) {}
|
||||
constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init, zero_init, zero_init} {}
|
||||
constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init, unit_init, unit_init} {}
|
||||
constexpr mat_base(identity_init_t) : mat_base{T{1}} {}
|
||||
|
||||
constexpr explicit mat_base(T d)
|
||||
: rows{
|
||||
|
||||
@@ -22,13 +22,9 @@ namespace vmath_hpp::detail
|
||||
constexpr qua_base()
|
||||
: qua_base(identity_init) {}
|
||||
|
||||
constexpr explicit qua_base(uninit_t) {}
|
||||
|
||||
constexpr explicit qua_base(zero_init_t)
|
||||
: v{T{0}}, s{0} {}
|
||||
|
||||
constexpr explicit qua_base(identity_init_t)
|
||||
: v{T{0}}, s{1} {}
|
||||
constexpr qua_base(uninit_t) {}
|
||||
constexpr qua_base(zero_init_t) : qua_base{zero_init, T{0}} {}
|
||||
constexpr qua_base(identity_init_t) : qua_base{zero_init, T{1}} {}
|
||||
|
||||
constexpr qua_base(T vx, T vy, T vz, T s)
|
||||
: v{vx, vy, vz}, s{s} {}
|
||||
|
||||
@@ -19,12 +19,11 @@ namespace vmath_hpp::detail
|
||||
T x, y;
|
||||
public:
|
||||
constexpr vec_base()
|
||||
: vec_base(zero_init) {}
|
||||
: vec_base{zero_init} {}
|
||||
|
||||
constexpr explicit vec_base(uninit_t) {}
|
||||
|
||||
constexpr explicit vec_base(zero_init_t)
|
||||
: x{0}, y{0} {}
|
||||
constexpr vec_base(uninit_t) {}
|
||||
constexpr vec_base(zero_init_t) : vec_base{T{0}} {}
|
||||
constexpr vec_base(unit_init_t) : vec_base{T{1}} {}
|
||||
|
||||
constexpr explicit vec_base(T v)
|
||||
: x{v}, y{v} {}
|
||||
@@ -55,12 +54,11 @@ namespace vmath_hpp::detail
|
||||
T x, y, z;
|
||||
public:
|
||||
constexpr vec_base()
|
||||
: vec_base(zero_init) {}
|
||||
: vec_base{zero_init} {}
|
||||
|
||||
constexpr explicit vec_base(uninit_t) {}
|
||||
|
||||
constexpr explicit vec_base(zero_init_t)
|
||||
: x{0}, y{0}, z{0} {}
|
||||
constexpr vec_base(uninit_t) {}
|
||||
constexpr vec_base(zero_init_t) : vec_base{T{0}} {}
|
||||
constexpr vec_base(unit_init_t) : vec_base{T{1}} {}
|
||||
|
||||
constexpr explicit vec_base(T v)
|
||||
: x{v}, y{v}, z{v} {}
|
||||
@@ -103,12 +101,11 @@ namespace vmath_hpp::detail
|
||||
T x, y, z, w;
|
||||
public:
|
||||
constexpr vec_base()
|
||||
: vec_base(zero_init) {}
|
||||
: vec_base{zero_init} {}
|
||||
|
||||
constexpr explicit vec_base(uninit_t) {}
|
||||
|
||||
constexpr explicit vec_base(zero_init_t)
|
||||
: x{0}, y{0}, z{0}, w{0} {}
|
||||
constexpr vec_base(uninit_t) {}
|
||||
constexpr vec_base(zero_init_t) : vec_base{T{0}} {}
|
||||
constexpr vec_base(unit_init_t) : vec_base{T{1}} {}
|
||||
|
||||
constexpr explicit vec_base(T v)
|
||||
: x{v}, y{v}, z{v}, w{v} {}
|
||||
|
||||
Reference in New Issue
Block a user