Skip to content

Math: Refactor Matrix4x4 struct #98

@AlBuSoft

Description

@AlBuSoft

Description

Revision of the matrix4x4 for more efficiency and less susceptibility to errors.

Details

Projekt: "ecm.math"
Datei: "matrix4x4.hpp" "matrix4x4.inl"
Namespace: "ecm::math"

Tasks

  • Add generic type T and rename Matrix4x4 to Matrix4x4_Base
  • Add typedefs for the vector types
  • Constructors:
    • mat()
    • mat(mat<T> m)
    • mat(T s)
    • mat(T x/y/z/w 1-4)
    • mat(vec4 v 1-4)
    • mat(X/Y/Z/W 1-4 x/y/z/w 1-4)
    • mat(V 1-4 v 1-4)
    • mat(mat<U> m)
  • Access operators:
    • column_type& operator[](uint8 i)
    • column_type const& operator[](uint8 i) const
  • Unary arithmetic operators:
    • operator=(mat<U> const& m)
    • operator+=(U s)
    • operator+=(mat<U> const& m)
    • operator-=(U s)
    • operator-=(mat<U> const& m)
    • operator*=(U s)
    • operator*=(mat<U> const& m)
    • operator/=(U s)
    • operator/=(mat<U> const& m)
  • Increment and decrement operators:
    • operator++()
    • operator--()
    • operator++(int)
    • operator--(int)
  • Boolean operators (analog):
    • operator==(mat<T> const& m1, mat<T> const& m2)
    • operator!=(mat<T> const& m1, mat<T> const& m2)
  • Unary operators (analog):
    • operator+(mat<T> const& m)
    • operator-(mat<T> const& m)
  • Binary operators (analog):
    • mat<T> operator+(mat<T> const& m, U scalar)
    • mat<T> operator+(T scalar, mat<U> const& m)
    • mat<T> operator+(mat<T> const& m1, mat<U> const& m2)
    • mat<T> operator-(mat<T> const& m, U scalar)
    • mat<T> operator-(T scalar, mat<U> const& m)
    • mat<T> operator-(mat<T> const& m1, mat<U> const& m2)
    • mat<T> operator*(mat<T> const& m, U scalar)
    • mat<T> operator*(T scalar, mat<U> const& m)
    • typename mat<T>::column_type operator*(mat<T> const& m, typename mat<U>::row_type const& v)
    • typename mat<T>::row_type operator*(typename mat<T>::column_type const& v, mat<U> const& m)
    • mat<T> operator*(mat<T> const& m1, mat<U> const& m2)
    • mat<T> operator/(mat<T> const& m, U scalar)
    • mat<T> operator/(T scalar, mat<U> const& m)
    • typename mat<T>::column_type operator/(mat<T> const& m, typename mat<U>::row_type const& v)
    • typename mat<T>::row_type operator/(typename mat<T>::column_type const& v, mat<U> const& m)
    • mat<T> operator/(mat<T> const& m1, mat<U> const& m2)
  • Add all comments
  • Add new type definitions (e.g. Matrix4x4, Matrix4x4i, ...)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions