|
HikoGUI
A low latency retained GUI
|
#include <hikogui/geometry/matrix2.hpp>
Public Member Functions | |
| constexpr | matrix2 (matrix2 const &) noexcept=default |
| constexpr | matrix2 (matrix2 &&) noexcept=default |
| constexpr matrix2 & | operator= (matrix2 const &) noexcept=default |
| constexpr matrix2 & | operator= (matrix2 &&) noexcept=default |
| constexpr | matrix2 () noexcept |
| Constructs an identity matrix. | |
| constexpr | matrix2 (f32x4 col0, f32x4 col1, f32x4 col2, f32x4 col3=f32x4{0.0f, 0.0f, 0.0f, 1.0f}) noexcept |
| Construct a matrix from four columns. | |
| constexpr | matrix2 (vector3 col0, vector3 col1, vector3 col2, vector3 col3=vector3{}) noexcept |
| Construct a matrix from four vectors. | |
| constexpr | matrix2 (vector2 col0, vector2 col1) noexcept |
| Construct a matrix from two vectors. | |
| constexpr | matrix2 (float c0r0, float c1r0, float c2r0, float c0r1, float c1r1, float c2r1, float c0r2, float c1r2, float c2r2) noexcept |
| Construct a 3x3 matrix from scalar values. | |
| constexpr | matrix2 (float c0r0, float c1r0, float c2r0, float c3r0, float c0r1, float c1r1, float c2r1, float c3r1, float c0r2, float c1r2, float c2r2, float c3r2, float c0r3, float c1r3, float c2r3, float c3r3) noexcept |
| Construct a 4x4 matrix from scalar values. | |
| constexpr | matrix2 (translate2 const &rhs) noexcept |
| constexpr | matrix2 (scale2 const &rhs) noexcept |
| constexpr | matrix2 (rotate2 const &rhs) noexcept |
| Convert quaternion to matrix. | |
| constexpr | operator std::array< f32x4, 4 > () const noexcept |
| Convert a point to its f32x4-nummeric_array. | |
| constexpr bool | holds_invariant () const noexcept |
| constexpr f32x4 | operator* (f32x4 const &rhs) const noexcept |
Transform a f32x4 numeric array by the matrix. | |
| constexpr matrix2 | operator~ () const |
| Invert matrix. | |
Static Public Member Functions | |
| static constexpr matrix2 | uniform (aarectangle src_rectangle, aarectangle dst_rectangle, alignment alignment) noexcept |
| Create a transformation matrix to translate and uniformly-scale a src_rectangle to a dst_rectangle. | |
Friends | |
| template<int I> | |
| constexpr f32x4 const & | get (matrix2 const &rhs) noexcept |
| Get a column. | |
| template<int I> | |
| constexpr f32x4 & | get (matrix2 &rhs) noexcept |
| Get a column. | |
| constexpr matrix2 | transpose (matrix2 const &rhs) noexcept |
| Matrix transpose. | |
| template<char DstX, char DstY, char DstZ, char DstW = 'w'> | |
| constexpr matrix2 | reflect (matrix2 const &rhs) noexcept |
| Reflect axis of a matrix. | |
| constexpr friend bool | operator== (matrix2 const &lhs, matrix2 const &rhs) noexcept |
| Compare two matrices potentially of different dimensions. | |
A 2D or 3D homogenius matrix for transforming homogenious vectors and points.
This matrix is in column major order. It is implemented as 4 columns made from a f32x4 numeric-array.
|
inlineconstexprnoexcept |
Constructs an identity matrix.
|
inlineconstexprnoexcept |
Construct a matrix from four columns.
| col0 | The 1st f32x4 column. |
| col1 | The 2nd f32x4 column. |
| col2 | The 3rd f32x4 column. |
| col3 | The 4th f32x4 column. |
|
inlineconstexprnoexcept |
Construct a 3x3 matrix from scalar values.
The function parameters are in row-major order for pretty formatting in source code. The matrix itself remains in column-major order.
| c0r0 | Value for column 0, row 0 |
| c1r0 | Value for column 1, row 0 |
| c2r0 | Value for column 2, row 0 |
| c0r1 | Value for column 0, row 1 |
| c1r1 | Value for column 1, row 1 |
| c2r1 | Value for column 2, row 1 |
| c0r2 | Value for column 0, row 2 |
| c1r2 | Value for column 1, row 2 |
| c2r2 | Value for column 2, row 2 |
|
inlineconstexprnoexcept |
Construct a 4x4 matrix from scalar values.
The function parameters are in row-major order for pretty formatting in source code. The matrix itself remains in column-major order.
| c0r0 | Value for column 0, row 0 |
| c1r0 | Value for column 1, row 0 |
| c2r0 | Value for column 2, row 0 |
| c3r0 | Value for column 3, row 0 |
| c0r1 | Value for column 0, row 1 |
| c1r1 | Value for column 1, row 1 |
| c2r1 | Value for column 2, row 1 |
| c3r1 | Value for column 3, row 1 |
| c0r2 | Value for column 0, row 2 |
| c1r2 | Value for column 1, row 2 |
| c2r2 | Value for column 2, row 2 |
| c3r2 | Value for column 3, row 2 |
| c0r3 | Value for column 0, row 3 |
| c1r3 | Value for column 1, row 3 |
| c2r3 | Value for column 2, row 3 |
| c3r3 | Value for column 3, row 3 |
|
inlineconstexprnoexcept |
Convert quaternion to matrix.
|
inlineexplicitconstexprnoexcept |
Convert a point to its f32x4-nummeric_array.
|
inlineconstexprnoexcept |
Transform a f32x4 numeric array by the matrix.
| rhs | The f32x4 numeric array to transform. |
|
inlineconstexpr |
Invert matrix.
|
inlinestaticconstexprnoexcept |
Create a transformation matrix to translate and uniformly-scale a src_rectangle to a dst_rectangle.
The implementation is located in scale.hpp since the definition requires both scale and translate.
| src_rectangle | The rectangle to be transformed. |
| dst_rectangle | The rectangle after transformation. |
| alignment | How the src_rectangle should be aligned inside the dst_rectangle after scaling and moving. |
|
friend |
Get a column.
| I | The index of the column. |
f32x4.
|
friend |
Get a column.
| I | The index of the column. |
f32x4. Compare two matrices potentially of different dimensions.
| rhs | The right-hand-side matrix. |
| true | When the two matrices compare equal. |
|
friend |
Reflect axis of a matrix.
The default axis of HikoGUI's geometry system are:
In Vulkan the Y axis is downward; so to translate a matrix from HikoGUI to Vulkan you can use:
The original axis are defined as the lower-case characters 'x', 'y', 'z' and 'w'; or for the negated axis as the upper-case characters 'X', 'Y', 'Z' and 'W'.
| DstX | Which of the original axis to use for the new matrix's x-axis. |
| DstY | Which of the original axis to use for the new matrix's y-axis. |
| DstZ | Which of the original axis to use for the new matrix's z-axis. |
| DstW | Which of the original axis to use for the new matrix's w-axis. |
| rhs | The matrix to reflect |