HikoGUI
Select Version: ⚠️ This documents the main development branch of HikoGUI. It might differ from release versions.
A low latency retained GUI
|
#include <hikogui/geometry/matrix3.hpp>
Static Public Member Functions | |
static constexpr matrix3 | 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 (matrix3 const &rhs) noexcept |
Get a column. | |
template<int I> | |
constexpr f32x4 & | get (matrix3 &rhs) noexcept |
Get a column. | |
constexpr matrix3 | transpose (matrix3 const &rhs) noexcept |
Matrix transpose. | |
template<char DstX, char DstY, char DstZ, char DstW = 'w'> | |
constexpr matrix3 | reflect (matrix3 const &rhs) noexcept |
Reflect axis of a matrix. | |
constexpr friend bool | operator== (matrix3 const &lhs, matrix3 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 matrix from two vectors.
col0 | The 1st vector2 column. |
col1 | The 2nd vector2 column. 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 |
Copy-construct a matrix from a smaller matrix.
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. |
|
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. |
Get a column.
I | The index of the column. |
f32x4
. 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. |
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 |