Ignore:
Timestamp:
Feb 14, 2011, 2:26:40 AM (11 years ago)
Author:
sam
Message:

Add matrix determinant and inverse methods.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/matrix.h

    r643 r648  
    176176GLOBALS(4)
    177177
    178 template <typename T> struct Vec4x4
    179 {
    180     inline Vec4x4() { }
    181     inline Vec4x4(T val) { v[0] = v[1] = v[2] = v[3] = val; }
    182     inline Vec4x4(Vec4<T> v0, Vec4<T> v1, Vec4<T> v2, Vec4<T> v3)
     178template <typename T> struct Mat4
     179{
     180    inline Mat4() { }
     181    inline Mat4(T val) { for (int i = 0; i < 4; i++) v[i] = val; }
     182    inline Mat4(Vec4<T> v0, Vec4<T> v1, Vec4<T> v2, Vec4<T> v3)
    183183        { v[0] = v0; v[1] = v1; v[2] = v2; v[3] = v3; }
    184184
     
    186186    inline Vec4<T> const& operator[](int n) const { return v[n]; }
    187187
    188     inline Vec4x4<T> operator +(Vec4x4<T> const val) const
    189     {
    190         Vec4x4<T> ret;
     188    static inline Mat4<T> identity()
     189    {
     190        Mat4<T> ret;
     191        for (int j = 0; j < 4; j++)
     192            for (int i = 0; i < 4; i++)
     193                ret[i][j] = i == j;
     194        return ret;
     195    }
     196
     197    T det() const;
     198    Mat4<T> invert() const;
     199
     200    inline Mat4<T> operator +(Mat4<T> const val) const
     201    {
     202        Mat4<T> ret;
    191203        for (int j = 0; j < 4; j++)
    192204            for (int i = 0; i < 4; i++)
     
    195207    }
    196208
    197     inline Vec4x4<T> operator -(Vec4x4<T> const val) const
    198     {
    199         Vec4x4<T> ret;
     209    inline Mat4<T> operator -(Mat4<T> const val) const
     210    {
     211        Mat4<T> ret;
    200212        for (int j = 0; j < 4; j++)
    201213            for (int i = 0; i < 4; i++)
     
    204216    }
    205217
    206     inline Vec4x4<T> operator *(Vec4x4<T> const val) const
    207     {
    208         Vec4x4<T> ret;
     218    inline Mat4<T> operator *(Mat4<T> const val) const
     219    {
     220        Mat4<T> ret;
    209221        for (int j = 0; j < 4; j++)
    210222            for (int i = 0; i < 4; i++)
     
    234246};
    235247
    236 typedef Vec4x4<float> float4x4;
    237 typedef Vec4x4<int> int4x4;
     248typedef Mat4<float> float4x4;
     249typedef Mat4<int> int4x4;
    238250
    239251#endif // __DH_MATRIX_H__
Note: See TracChangeset for help on using the changeset viewer.