acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
matrix_type< FLOATING_TYPE, t_iDimension, t_emajor > Struct Template Reference

Matrix class. More...

#include <matrix.h>

Classes

struct  column

Public Types

using FLOATING = FLOATING_TYPE

Public Member Functions

constexpr matrix_type (const matrix_type< FLOATING, 4 > &m)
constexpr matrix_type (const matrix_type< FLOATING, 4 > &m)
template<prototype_floating FLOATING1>
requires (DIMENSION == 4)
 matrix_type (const FLOATING1 *p)
constexpr matrix_type (const matrix_type< FLOATING, 3 > &m)
template<prototype_number NUMBER>
constexpr matrix_type (NUMBER diagonal)
 matrix_type (const quaternion_type< FLOATING > &q)
sequence_type< FLOATING, 4 > mul_scalar (const sequence_type< FLOATING, 4 > &s) const
template<prototype_number NUMBER>
matrix_type & operator*= (NUMBER n)
template<prototype_number NUMBER>
matrix_type operator* (NUMBER n) const
f32_sequence4 operator* (const f32_sequence4 &s) const
sequence_type< FLOATING, 3 > operator* (const sequence_type< FLOATING, 3 > &v) const
matrix_type mul_scalar (const matrix_type &B) const
matrix_type operator* (const matrix_type &m) const
const column & operator[] (::i32 i) const
column & operator[] (::i32 i)
matrix_type & rotate (const sequence_type< FLOATING, 3 > &axis, FLOATING angle)
sequence_type< FLOATING, 3 > operator* (const sequence_type< FLOATING, 3 > &s) const
matrix_type rotated (angle_type< FLOATING > angleRadians, const sequence_type< FLOATING, 3 > &axis) const
matrix_type & rotate (angle_type< FLOATING > angleRadians, const sequence_type< FLOATING, 3 > &axis)
matrix_type & transpose ()
matrix_type & translate (const sequence_type< FLOATING, 3 > &s)
matrix_type translated (const sequence_type< FLOATING, 3 > &s) const
matrix_type & scale (const sequence_type< FLOATING, 3 > &s)
matrix_type scaled (const sequence_type< FLOATING, 3 > &s) const
FLOATING determinant () const
FLOATING determinant () const
matrix_type & inverse_scalar ()
matrix_type & inverse_scalar ()
matrix_type & inverse ()
matrix_type inversed () const
matrix_type transposed () const
matrix_type & operator= (const quaternion_type< FLOATING > &q)
row_major_type< FLOATING, t_iDimension > transpose () const

Static Public Member Functions

static matrix_type translation (const sequence_type< FLOATING, DIMENSION - 1 > &t)
static matrix_type scaling (const sequence_type< FLOATING, DIMENSION - 1 > &s)
static matrix_type rotation (const quaternion_type< FLOATING > &q)
static matrix_type rotation (const sequence_type< FLOATING, 3 > &axis, FLOATING angle)
template<::i32 S = DIMENSION, std::enable_if_t< S==4, ::i32 > = 0>
static matrix_type perspective (FLOATING fov, FLOATING near_, FLOATING far_, FLOATING aspect=1.f)
template<::i32 S = DIMENSION, std::enable_if_t< S==4, ::i32 > = 0>
static matrix_type ortho (FLOATING left, FLOATING right, FLOATING bottom, FLOATING top, FLOATING near_, FLOATING far_)
static matrix_type look_at (const sequence_type< FLOATING, 3 > &origin, const sequence_type< FLOATING, 3 > &target, const sequence_type< FLOATING, 3 > &up)
static matrix_type from (const quaternion_type< FLOATING > &q)

Public Attributes

union { 
   column   columna [DIMENSION] 
   FLOATING   m [DIMENSION][DIMENSION] 
   FLOATING   fa [SQUARED_DIMENSION] 
}; 

Static Public Attributes

static constexpr bool IsNanoGUI = true
static constexpr bool IsMatrix = true
static constexpr ::i32 DIMENSION = t_iDimension
static constexpr ::i32 SQUARED_DIMENSION = DIMENSION * DIMENSION

Detailed Description

template<prototype_floating FLOATING_TYPE, ::i32 t_iDimension, enum_matrix_major t_emajor>
struct matrix_type< FLOATING_TYPE, t_iDimension, t_emajor >

Matrix class.

Constructor & Destructor Documentation

◆ matrix_type()

template<prototype_floating FLOATING_TYPE, ::i32 t_iDimension, enum_matrix_major t_emajor>
template<prototype_floating FLOATING1>
requires (DIMENSION == 4)
matrix_type< FLOATING_TYPE, t_iDimension, t_emajor >::matrix_type ( const FLOATING1 * p)
inline

expects p to point to an array of at least SQUARED_DIMENSION elements in column-major order


The documentation for this struct was generated from the following files: