SA_Maths
Sapphire Suite's C++ Maths Library
Loading...
Searching...
No Matches
Matrix4Base.hpp
1// Copyright (c) 2023 Sapphire development team. All Rights Reserved.
2
3#pragma once
4
5#ifndef SAPPHIRE_MATHS_MATRIX4_BASE_GUARD
6#define SAPPHIRE_MATHS_MATRIX4_BASE_GUARD
7
9
10namespace SA
11{
13
14 namespace Intl
15 {
16 template <typename T, MatrixMajor major>
17 struct Mat4_Base;
18
19//{ Row Major
20
21 template <typename T>
22 struct Mat4_Base<T, MatrixMajor::Row>
23 {
25 T e00{ 1 }; T e01{ 0 }; T e02{ 0 }; T e03{ 0 };
26 T e10{ 0 }; T e11{ 1 }; T e12{ 0 }; T e13{ 0 };
27 T e20{ 0 }; T e21{ 0 }; T e22{ 1 }; T e23{ 0 };
28 T e30{ 0 }; T e31{ 0 }; T e32{ 0 }; T e33{ 1 };
29
30
31//{ Constructors
32
34 Mat4_Base() = default;
35
37 constexpr Mat4_Base(
38 T _e00, T _e01, T _e02, T _e03,
39 T _e10, T _e11, T _e12, T _e13,
40 T _e20, T _e21, T _e22, T _e23,
41 T _e30, T _e31, T _e32, T _e33
42 ) noexcept;
43
44//}
45 };
46
47//}
48
49//{ Column Major
50
51 template <typename T>
52 struct Mat4_Base<T, MatrixMajor::Column>
53 {
55 T e00{ 1 }; T e10{ 0 }; T e20{ 0 }; T e30{ 0 };
56 T e01{ 0 }; T e11{ 1 }; T e21{ 0 }; T e31{ 0 };
57 T e02{ 0 }; T e12{ 0 }; T e22{ 1 }; T e32{ 0 };
58 T e03{ 0 }; T e13{ 0 }; T e23{ 0 }; T e33{ 1 };
59
60//{ Constructors
61
63 Mat4_Base() = default;
64
66 constexpr Mat4_Base(
67 T _e00, T _e01, T _e02, T _e03,
68 T _e10, T _e11, T _e12, T _e13,
69 T _e20, T _e21, T _e22, T _e23,
70 T _e30, T _e31, T _e32, T _e33
71 ) noexcept;
72
73//}
74 };
75 }
76
77//}
78
80}
81
82#include <SA/Maths/Matrix/Matrix4Base.inl>
83
84#endif // GUARD
Matrix Major enum definitions
MatrixMajor
Matrix major enum.
Definition MatrixMajor.hpp:24
@ Column
Column major standard.
@ Row
Row major standard.