]> Dogcows Code - chaz/yoink/blobdiff - src/matrix.hh
now using cml for vectors and math stuff
[chaz/yoink] / src / matrix.hh
diff --git a/src/matrix.hh b/src/matrix.hh
deleted file mode 100644 (file)
index 49bdd4c..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-
-/*******************************************************************************
-
- Copyright (c) 2009, Charles McGarvey
- All rights reserved.
- Redistribution   and   use  in  source  and  binary  forms,  with  or  without
- modification, are permitted provided that the following conditions are met:
-   * Redistributions  of  source  code  must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-   * Redistributions  in binary form must reproduce the above copyright notice,
-     this  list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
- THIS  SOFTWARE  IS  PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND  ANY  EXPRESS  OR  IMPLIED  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED.  IN  NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR  ANY  DIRECT,  INDIRECT,  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES  (INCLUDING,  BUT  NOT  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES;  LOSS  OF  USE,  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*******************************************************************************/
-
-#ifndef _MATRIX_HH_
-#define _MATRIX_HH_
-
-/**
- * @file matrix.hh
- * Matrix classes.
- */
-
-#include <cassert>
-
-#include "math.hh"
-
-
-namespace dc {
-
-/**
- * 3x3 matrix.
- */
-
-struct matrix3
-{
-       matrix3() {}
-       matrix3(scalar M11, scalar M12, scalar M13,
-                       scalar M21, scalar M22, scalar M23,
-                       scalar M31, scalar M32, scalar M33)
-       {
-               m11 = M11; m12 = M12; m13 = M13;
-               m21 = M21; m22 = M22; m23 = M23;
-               m31 = M31; m32 = M32; m33 = M33;
-       }
-       matrix3(scalar m[9])
-       {
-               array[0] = m[0]; array[1] = m[1]; array[2] = m[2];
-               array[3] = m[3]; array[4] = m[4]; array[5] = m[5];
-               array[6] = m[6]; array[7] = m[7]; array[8] = m[8];
-       }
-
-       const scalar& operator[](int i) const
-       {
-               assert(i >= 0 && i <= 8 && "Index into matrix3 out of bounds.");
-               return array[i];
-       }
-       scalar& operator[](int i)
-       {
-               assert(i >= 0 && i <= 8 && "Index into matrix3 out of bounds.");
-               return array[i];
-       }
-
-       matrix3 operator+(const matrix3& m) const
-       {
-               return matrix3(m11 + m.m11, m12 + m.m12, m13 + m.m13,
-                                          m21 + m.m21, m22 + m.m22, m23 + m.m23,
-                                          m31 + m.m31, m32 + m.m32, m33 + m.m33);
-       }
-       matrix3 operator-(const matrix3& m) const
-       {
-               return matrix3(m11 - m.m11, m12 - m.m12, m13 - m.m13,
-                                          m21 - m.m21, m22 - m.m22, m23 - m.m23,
-                                          m31 - m.m31, m32 - m.m32, m33 - m.m33);
-       }
-       matrix3 operator*(const matrix3& m) const
-       {
-               return matrix3(m11 * m.m11 + m12 * m.m21 + m13 * m.m31,
-                                          m11 * m.m12 + m12 * m.m22 + m13 * m.m32,
-                                          m11 * m.m13 + m12 * m.m23 + m13 * m.m33,
-                                          m21 * m.m11 + m22 * m.m21 + m23 * m.m31,
-                                          m21 * m.m12 + m22 * m.m22 + m23 * m.m32,
-                                          m21 * m.m13 + m22 * m.m23 + m23 * m.m33,
-                                          m31 * m.m11 + m32 * m.m21 + m33 * m.m31,
-                                          m31 * m.m12 + m32 * m.m22 + m33 * m.m32,
-                                          m32 * m.m13 + m32 * m.m23 + m33 * m.m33);
-       }
-       matrix3 operator*(scalar s) const
-       {
-               return matrix3(m11 * s, m12 * s, m13 * s,
-                                          m21 * s, m22 * s, m23 * s,
-                                          m31 * s, m32 * s, m33 * s);
-       }
-       matrix3 operator/(scalar s) const
-       {
-               return matrix3(m11 / s, m12 / s, m13 / s,
-                                          m21 / s, m22 / s, m23 / s,
-                                          m31 / s, m32 / s, m33 / s);
-       }
-
-       matrix3& operator+=(const matrix3& m)
-       {
-               m11 += m.m11; m12 += m.m12; m13 += m.m13;
-               m21 += m.m21; m22 += m.m22; m23 += m.m23;
-               m31 += m.m31; m32 += m.m32; m33 += m.m33;
-               return *this;
-       }
-       matrix3& operator-=(const matrix3& m)
-       {
-               m11 -= m.m11; m12 -= m.m12; m13 -= m.m13;
-               m21 -= m.m21; m22 -= m.m22; m23 -= m.m23;
-               m31 -= m.m31; m32 -= m.m32; m33 -= m.m33;
-               return *this;
-       }
-       matrix3& operator*=(const matrix3& m)
-       {
-               return *this = *this * m;
-       }
-       matrix3& operator*=(scalar s)
-       {
-               m11 *= s; m12 *= s; m13 *= s;
-               m21 *= s; m22 *= s; m23 *= s;
-               m31 *= s; m32 *= s; m33 *= s;
-               return *this;
-       }
-       matrix3& operator/=(scalar s)
-       {
-               m11 /= s; m12 /= s; m13 /= s;
-               m21 /= s; m22 /= s; m23 /= s;
-               m31 /= s; m32 /= s; m33 /= s;
-               return *this;
-       }
-       
-       matrix3 operator-() const
-       {
-               return matrix3(-m11, -m12, -m13,
-                                          -m21, -m22, -m23,
-                                          -m31, -m32, -m33);
-       }
-
-       bool operator==(const matrix3& m) const
-       {
-               return equals(m11,m.m11) && equals(m12,m.m12) && equals(m13,m.m13) &&
-                          equals(m21,m.m21) && equals(m22,m.m22) && equals(m23,m.m23) &&
-                          equals(m31,m.m31) && equals(m32,m.m32) && equals(m33,m.m33);
-       }
-       bool operator!=(const matrix3& m) const
-       {
-               return !(*this == m);
-       }
-
-
-       union
-       {
-               struct
-               {
-                       scalar m11, m21, m31;
-                       scalar m12, m22, m32;
-                       scalar m13, m23, m33;   ///< scalars
-               };
-               scalar array[9];                        ///< array
-       };
-
-       static matrix3 zero;                    ///< zero matrix
-       static matrix3 identity;                ///< identity matrix
-};
-
-inline matrix3 operator*(scalar s, const matrix3& m)
-{
-       return m * s;
-}
-inline matrix3 operator/(scalar s, const matrix3& m)
-{
-       return matrix3(s / m.m11, s / m.m12, s / m.m13,
-                                  s / m.m21, s / m.m22, s / m.m23,
-                                  s / m.m31, s / m.m32, s / m.m33);
-}
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-/**
- * 4x4 matrix.
- */
-
-struct matrix4
-{
-       matrix4() {}
-       matrix4(scalar M11, scalar M12, scalar M13, scalar M14,
-                       scalar M21, scalar M22, scalar M23, scalar M24,
-                       scalar M31, scalar M32, scalar M33, scalar M34,
-                       scalar M41, scalar M42, scalar M43, scalar M44)
-       {
-               m11 = M11; m12 = M12; m13 = M13; m14 = M14;
-               m21 = M21; m22 = M22; m23 = M23; m24 = M24;
-               m31 = M31; m32 = M32; m33 = M33; m34 = M34;
-               m41 = M41; m42 = M42; m43 = M43; m44 = M44;
-       }
-       matrix4(scalar m[15])
-       {
-               array[0] = m[0]; array[1] = m[1]; array[2] = m[2]; array[3] = m[3];
-               array[4] = m[4]; array[5] = m[5]; array[6] = m[6]; array[7] = m[7];
-               array[8] = m[8]; array[9] = m[9]; array[10] = m[10]; array[11] = m[11];
-               array[12] = m[12]; array[13] = m[13]; array[14] = m[14]; array[15] = m[15];
-       }
-
-       const scalar& operator[](int i) const
-       {
-               assert(i >= 0 && i <= 15 && "Index into matrix4 out of bounds.");
-               return array[i];
-       }
-       scalar& operator[](int i)
-       {
-               assert(i >= 0 && i <= 15 && "Index into matrix4 out of bounds.");
-               return array[i];
-       }
-
-       matrix4 operator+(const matrix4& m) const
-       {
-               return matrix4(m11 + m.m11, m12 + m.m12, m13 + m.m13, m14 + m.m14,
-                                          m21 + m.m21, m22 + m.m22, m23 + m.m23, m24 + m.m24,
-                                          m31 + m.m31, m32 + m.m32, m33 + m.m33, m34 + m.m34,
-                                          m41 + m.m41, m42 + m.m42, m43 + m.m43, m44 + m.m44);
-       }
-       matrix4 operator-(const matrix4& m) const
-       {
-               return matrix4(m11 - m.m11, m12 - m.m12, m13 - m.m13, m14 - m.m14,
-                                          m21 - m.m21, m22 - m.m22, m23 - m.m23, m24 - m.m24,
-                                          m31 - m.m31, m32 - m.m32, m33 - m.m33, m34 - m.m34,
-                                          m41 - m.m41, m42 - m.m42, m43 - m.m43, m44 - m.m44);
-       }
-       matrix4 operator*(const matrix4& m) const // TODO ??
-       {
-               return matrix4(m11 * m.m11 + m12 * m.m21 + m13 * m.m31 + m14 * m.m41,
-                                          m11 * m.m12 + m12 * m.m22 + m13 * m.m32 + m14 * m.m42,
-                                          m11 * m.m13 + m12 * m.m23 + m13 * m.m33 + m14 * m.m43,
-                                          m11 * m.m14 + m12 * m.m24 + m13 * m.m34 + m14 * m.m44,
-                                          m21 * m.m11 + m22 * m.m21 + m23 * m.m31 + m24 * m.m41,
-                                          m21 * m.m12 + m22 * m.m22 + m23 * m.m32 + m24 * m.m42,
-                                          m21 * m.m13 + m22 * m.m23 + m23 * m.m33 + m24 * m.m43,
-                                          m21 * m.m14 + m22 * m.m24 + m23 * m.m34 + m24 * m.m44,
-                                          m31 * m.m11 + m32 * m.m21 + m33 * m.m31 + m34 * m.m41,
-                                          m31 * m.m12 + m32 * m.m22 + m33 * m.m32 + m34 * m.m42,
-                                          m31 * m.m13 + m32 * m.m23 + m33 * m.m33 + m34 * m.m43,
-                                          m31 * m.m14 + m32 * m.m24 + m33 * m.m34 + m34 * m.m44,
-                                          m41 * m.m11 + m42 * m.m21 + m43 * m.m31 + m44 * m.m41,
-                                          m41 * m.m12 + m42 * m.m22 + m43 * m.m32 + m44 * m.m42,
-                                          m41 * m.m13 + m42 * m.m23 + m43 * m.m33 + m44 * m.m43,
-                                          m41 * m.m14 + m42 * m.m24 + m43 * m.m34 + m44 * m.m44);
-       }
-       matrix4 operator*(scalar s) const
-       {
-               return matrix4(m11 * s, m12 * s, m13 * s, m14 * s,
-                                          m21 * s, m22 * s, m23 * s, m24 * s,
-                                          m31 * s, m32 * s, m33 * s, m34 * s,
-                                          m41 * s, m42 * s, m43 * s, m44 * s);
-       }
-       matrix4 operator/(scalar s) const
-       {
-               return matrix4(m11 / s, m12 / s, m13 / s, m14 / s,
-                                          m21 / s, m22 / s, m23 / s, m24 / s,
-                                          m31 / s, m32 / s, m33 / s, m34 / s,
-                                          m41 / s, m42 / s, m43 / s, m44 / s);
-       }
-
-       matrix4& operator+=(const matrix4& m)
-       {
-               m11 += m.m11; m12 += m.m12; m13 += m.m13; m14 += m.m14;
-               m21 += m.m21; m22 += m.m22; m23 += m.m23; m24 += m.m24;
-               m31 += m.m31; m32 += m.m32; m33 += m.m33; m34 += m.m34;
-               m41 += m.m41; m42 += m.m42; m43 += m.m43; m44 += m.m44;
-               return *this;
-       }
-       matrix4& operator-=(const matrix4& m)
-       {
-               m11 -= m.m11; m12 -= m.m12; m13 -= m.m13; m14 -= m.m14;
-               m21 -= m.m21; m22 -= m.m22; m23 -= m.m23; m24 -= m.m24;
-               m31 -= m.m31; m32 -= m.m32; m33 -= m.m33; m34 -= m.m34;
-               m41 -= m.m41; m42 -= m.m42; m43 -= m.m43; m44 -= m.m44;
-               return *this;
-       }
-       matrix4& operator*=(const matrix4& m)
-       {
-               *this = *this * m;
-               return *this;
-       }
-       matrix4& operator*=(scalar s)
-       {
-               m11 *= s; m12 *= s; m13 *= s; m14 *= s;
-               m21 *= s; m22 *= s; m23 *= s; m24 *= s;
-               m31 *= s; m32 *= s; m33 *= s; m34 *= s;
-               m41 *= s; m42 *= s; m43 *= s; m44 *= s;
-               return *this;
-       }
-       matrix4& operator/=(scalar s)
-       {
-               m11 /= s; m12 /= s; m13 /= s; m14 /= s;
-               m21 /= s; m22 /= s; m23 /= s; m24 /= s;
-               m31 /= s; m32 /= s; m33 /= s; m34 /= s;
-               m41 /= s; m42 /= s; m43 /= s; m44 /= s;
-               return *this;
-       }
-       
-       matrix4 operator-() const
-       {
-               return matrix4(-m11, -m12, -m13, -m14,
-                                          -m21, -m22, -m23, -m24,
-                                          -m31, -m32, -m33, -m34,
-                                          -m41, -m42, -m43, -m44);
-       }
-
-       bool operator==(const matrix4& m) const
-       {
-               return equals(m11,m.m11) && equals(m12,m.m12) && equals(m13,m.m13) &&
-                          equals(m14,m.m14) && equals(m21,m.m21) && equals(m22,m.m22) &&
-                          equals(m23,m.m23) && equals(m24,m.m24) && equals(m31,m.m31) &&
-                          equals(m32,m.m32) && equals(m33,m.m33) && equals(m34,m.m34) &&
-                          equals(m41,m.m41) && equals(m42,m.m42) && equals(m43,m.m43) &&
-                          equals(m44,m.m44);
-       }
-       bool operator!=(const matrix4& m) const
-       {
-               return !(*this == m);
-       }
-
-
-       union
-       {
-               struct
-               {
-                       scalar m11, m21, m31, m41;
-                       scalar m12, m22, m32, m42;
-                       scalar m13, m23, m33, m43;
-                       scalar m14, m24, m34, m44;      ///< scalars
-               };
-               scalar array[16];                               ///< array
-       };
-
-       static matrix4 zero;                            ///< zero matrix
-       static matrix4 identity;                        ///< identity matrix
-};
-
-inline matrix4 operator*(scalar s, const matrix4& m)
-{
-       return m * s;
-}
-inline matrix4 operator/(scalar s, const matrix4& m)
-{
-       return matrix4(s / m.m11, s / m.m12, s / m.m13, s / m.m14,
-                                  s / m.m21, s / m.m22, s / m.m23, s / m.m24,
-                                  s / m.m31, s / m.m32, s / m.m33, s / m.m34,
-                                  s / m.m41, s / m.m42, s / m.m43, s / m.m44);
-}
-
-
-} // namespace dc
-
-
-#endif // _MATRIX_HH_
-
This page took 0.029107 seconds and 4 git commands to generate.