Changeset 5696 in orxonox.OLD for trunk/src/lib/math/matrix.cc
- Timestamp:
- Nov 22, 2005, 1:35:33 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/math/matrix.cc
r5677 r5696 14 14 */ 15 15 #include "matrix.h" 16 16 #include <math.h> 17 18 #ifdef DEBUG 19 #include "debug.h" 20 #else 17 21 #include <stdio.h> 18 #include <math.h> 19 20 22 #define PRINT(x) printf 23 #endif 24 25 /** 26 * constructs a Matrix from all Parameters in a Row 27 * @param m11 [0][0] 28 * @param m12 [0][1] 29 * @param m13 [0][2] 30 * @param m21 [1][0] 31 * @param m22 [1][1] 32 * @param m23 [1][2] 33 * @param m31 [2][0] 34 * @param m32 [2][1] 35 * @param m33 [2][2] 36 */ 37 Matrix::Matrix ( float m11, float m12, float m13, 38 float m21, float m22, float m23, 39 float m31, float m32, float m33 ) 40 { 41 this->m11 = m11; this->m12 = m12; this->m13 = m13; 42 this->m21 = m21; this->m22 = m22; this->m23 = m23; 43 this->m31 = m31; this->m32 = m32; this->m33 = m33; 44 }; 45 46 /** 47 * creates a Matrix out of an Array of floats with size [3][3] 48 * @param m the Matrix stored in an Array 49 */ 50 Matrix::Matrix(const float m[3][3]) 51 { 52 this->m11 = m[0][0]; this->m12 = m[0][1]; this->m13 = m[0][2]; 53 this->m21 = m[1][0]; this->m22 = m[1][1]; this->m23 = m[1][2]; 54 this->m31 = m[2][0]; this->m32 = m[2][1]; this->m33 = m[2][2]; 55 }; 56 57 58 /** 59 * adds a Matrix to this one returning the result 60 * @param m the Matrix to add to this one 61 * @returns a copy of this Matrix added m 62 */ 63 Matrix Matrix::operator+ (const Matrix& m) const 64 { 65 return Matrix (this->m11 + m.m11, this->m12 + m.m12, this->m13 + m.m13, 66 this->m21 + m.m21, this->m22 + m.m22, this->m23 + m.m23, 67 this->m31 + m.m31, this->m32 + m.m32, this->m33 + m.m33); 68 } 69 70 /** 71 * sustracts a Matrix from this one returning the result 72 * @param m the Matrix to substract from this one 73 * @returns a copy of this Matrix substracted m 74 */ 75 Matrix Matrix::operator- (const Matrix& m) const 76 { 77 return Matrix (this->m11 - m.m11, this->m12 - m.m12, this->m13 - m.m13, 78 this->m21 - m.m21, this->m22 - m.m22, this->m23 - m.m23, 79 this->m31 - m.m31, this->m32 - m.m32, this->m33 - m.m33); 80 } 81 82 /** 83 * multiplies each value of a copu of this Matrix by k 84 * @param k the multiplication factor 85 * @returns a copy of this Matrix multiplied by k 86 */ 87 Matrix Matrix::operator* (float k) const 88 { 89 return Matrix(this->m11 * k, this->m12 * k, this->m13 * k, 90 this->m21 * k, this->m22 * k, this->m23 * k, 91 this->m31 * k, this->m32 * k, this->m33 * k); 92 } 93 94 /** 95 * multiplies the Matrix by a Vector returning a Vector of the result 96 * @param v the Vector the matrix will be multiplied with 97 * @returns the result of the Multiplication 98 */ 99 Vector Matrix::operator* (const Vector& v) const 100 { 101 return Vector (this->m11*v.x + this->m12*v.y + this->m13*v.z, 102 this->m21*v.x + this->m22*v.y + this->m23*v.z, 103 this->m31*v.x + this->m32*v.y + this->m33*v.z ); 104 } 105 106 /** 107 * @returns a Transposed copy of this Matrix 108 */ 109 Matrix Matrix::getTransposed() const 110 { 111 return Matrix( this->m11, this->m21, this->m31, 112 this->m12, this->m22, this->m32, 113 this->m13, this->m23, this->m33); 114 } 115 116 /** 117 * converts the Matrix into 3 Vector, and returns them in m1, m2 and m3 118 * @param m1 the first Column of the Matrix as a Vector 119 * @param m2 the second Column of the Matrix as a Vector 120 * @param m3 the third Column of the Matrix as a Vector 121 */ 122 void Matrix::toVectors(Vector& m1, Vector& m2, Vector& m3) const 123 { 124 m1 = Vector(this->m11, this->m21, this->m31); 125 m2 = Vector(this->m12, this->m22, this->m32); 126 m3 = Vector(this->m13, this->m23, this->m33); 127 } 128 129 /** 130 * @returns the Determinant of this Matrix 131 */ 132 float Matrix::getDeterminant() const 133 { 134 return this->m11*(this->m22*this->m33 - this->m23*this->m32) - 135 this->m12*(this->m21*this->m33 - this->m23*this->m31) + 136 this->m13*(this->m21*this->m32 - this->m22*this->m31); 137 } 138 139 /** 140 * calculates an returns the EingenValues of this Matrix. 141 * @param eigneValues the Values calculated in a Vector 142 * @returns the Count of found eigenValues 143 * 144 * This Function calculates the EigenValues of a 3x3-Matrix explicitly. 145 * the Returned value eigenValues has the Values stored in Vector form 146 * The Vector will be filled upside down, meaning if the count of found 147 * eingenValues is 1 the only value will be located in eigneValues.x 148 */ 21 149 int Matrix::getEigenValues(Vector& eigenValues) const 22 150 { … … 83 211 } 84 212 213 /** 214 * calculates and returns the EigenVectors of this function as Vectors. 215 * @param eigVc1 the first eigenVector will be stored here. 216 * @param eigVc2 the second eigenVector will be stored here. 217 * @param eigVc3 the third eigenVector will be stored here. 218 */ 85 219 void Matrix::getEigenVectors(Vector& eigVc1, Vector& eigVc2, Vector& eigVc3) const 86 220 { … … 122 256 } 123 257 258 /** 259 * prints out some nice debug information 260 */ 124 261 void Matrix::debug() const 125 262 {
Note: See TracChangeset
for help on using the changeset viewer.