QGenericMatrix< N, M, T > Class Template Reference

QGenericMatrix< N, M, T > Class Template Reference

#include <qgenericmatrix.h>

Class Description

template<int N, int M, typename T>
class QGenericMatrix< N, M, T >

Definition at line 56 of file qgenericmatrix.h.

Public Member Functions

 QGenericMatrix ()
 
 QGenericMatrix (const QGenericMatrix< N, M, T > &other)
 
 QGenericMatrix (const T *values)
 
const T & operator() (int row, int column) const
 
T & operator() (int row, int column)
 
bool isIdentity () const
 
void setToIdentity ()
 
void fill (T value)
 
QGenericMatrix< M, N, T > transposed () const
 
QGenericMatrix< N, M, T > & operator+= (const QGenericMatrix< N, M, T > &other)
 
QGenericMatrix< N, M, T > & operator-= (const QGenericMatrix< N, M, T > &other)
 
QGenericMatrix< N, M, T > & operator*= (T factor)
 
QGenericMatrix< N, M, T > & operator/= (T divisor)
 
bool operator== (const QGenericMatrix< N, M, T > &other) const
 
bool operator!= (const QGenericMatrix< N, M, T > &other) const
 
void copyDataTo (T *values) const
 
T * data ()
 
const T * data () const
 
const T * constData () const
 

Friends

template<int NN, int MM, typename TT >
class QGenericMatrix
 
template<int NN, int MM, typename TT >
QGenericMatrix< NN, MM, TT > operator+ (const QGenericMatrix< NN, MM, TT > &m1, const QGenericMatrix< NN, MM, TT > &m2)
 
template<int NN, int MM, typename TT >
QGenericMatrix< NN, MM, TT > operator- (const QGenericMatrix< NN, MM, TT > &m1, const QGenericMatrix< NN, MM, TT > &m2)
 
template<int NN, int M1, int M2, typename TT >
QGenericMatrix< M1, M2, TT > operator* (const QGenericMatrix< NN, M2, TT > &m1, const QGenericMatrix< M1, NN, TT > &m2)
 
template<int NN, int MM, typename TT >
QGenericMatrix< NN, MM, TT > operator- (const QGenericMatrix< NN, MM, TT > &matrix)
 
template<int NN, int MM, typename TT >
QGenericMatrix< NN, MM, TT > operator* (TT factor, const QGenericMatrix< NN, MM, TT > &matrix)
 
template<int NN, int MM, typename TT >
QGenericMatrix< NN, MM, TT > operator* (const QGenericMatrix< NN, MM, TT > &matrix, TT factor)
 
template<int NN, int MM, typename TT >
QGenericMatrix< NN, MM, TT > operator/ (const QGenericMatrix< NN, MM, TT > &matrix, TT divisor)
 

Constructor & Destructor Documentation

Q_INLINE_TEMPLATE QGenericMatrix ( )

Definition at line 115 of file qgenericmatrix.h.

116 {
117  setToIdentity();
118 }
Q_INLINE_TEMPLATE QGenericMatrix ( const QGenericMatrix< N, M, T > &  other)

Definition at line 121 of file qgenericmatrix.h.

122 {
123  for (int col = 0; col < N; ++col)
124  for (int row = 0; row < M; ++row)
125  m[col][row] = other.m[col][row];
126 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE QGenericMatrix ( const T *  values)
explicit

Definition at line 129 of file qgenericmatrix.h.

130 {
131  for (int col = 0; col < N; ++col)
132  for (int row = 0; row < M; ++row)
133  m[col][row] = values[row * N + col];
134 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLboolean GLenum GLenum GLvoid * values
Definition: GLee.h:895

Member Function Documentation

Q_INLINE_TEMPLATE const T & operator() ( int  row,
int  column 
) const

Definition at line 137 of file qgenericmatrix.h.

138 {
139  Q_ASSERT(row >= 0 && row < M && column >= 0 && column < N);
140  return m[column][row];
141 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLenum GLenum GLvoid GLvoid * column
Definition: GLee.h:893
Q_INLINE_TEMPLATE T & operator() ( int  row,
int  column 
)

Definition at line 144 of file qgenericmatrix.h.

145 {
146  Q_ASSERT(row >= 0 && row < M && column >= 0 && column < N);
147  return m[column][row];
148 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLenum GLenum GLvoid GLvoid * column
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE bool isIdentity ( ) const

Definition at line 151 of file qgenericmatrix.h.

152 {
153  for (int col = 0; col < N; ++col) {
154  for (int row = 0; row < M; ++row) {
155  if (row == col) {
156  if (m[col][row] != 1.0f)
157  return false;
158  } else {
159  if (m[col][row] != 0.0f)
160  return false;
161  }
162  }
163  }
164  return true;
165 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLclampf f
Definition: GLee.h:9303
Q_OUTOFLINE_TEMPLATE void setToIdentity ( )

Definition at line 168 of file qgenericmatrix.h.

169 {
170  for (int col = 0; col < N; ++col) {
171  for (int row = 0; row < M; ++row) {
172  if (row == col)
173  m[col][row] = 1.0f;
174  else
175  m[col][row] = 0.0f;
176  }
177  }
178 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE void fill ( value)

Definition at line 181 of file qgenericmatrix.h.

182 {
183  for (int col = 0; col < N; ++col)
184  for (int row = 0; row < M; ++row)
185  m[col][row] = value;
186 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLsizei const GLfloat * value
Definition: GLee.h:1742
Q_OUTOFLINE_TEMPLATE QGenericMatrix< M, N, T > transposed ( ) const

Definition at line 189 of file qgenericmatrix.h.

190 {
191  QGenericMatrix<M, N, T> result(1);
192  for (int row = 0; row < M; ++row)
193  for (int col = 0; col < N; ++col)
194  result.m[row][col] = m[col][row];
195  return result;
196 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE QGenericMatrix< N, M, T > & operator+= ( const QGenericMatrix< N, M, T > &  other)

Definition at line 199 of file qgenericmatrix.h.

200 {
201  for (int row = 0; row < M; ++row)
202  for (int col = 0; col < N; ++col)
203  m[col][row] += other.m[col][row];
204  return *this;
205 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE QGenericMatrix< N, M, T > & operator-= ( const QGenericMatrix< N, M, T > &  other)

Definition at line 208 of file qgenericmatrix.h.

209 {
210  for (int row = 0; row < M; ++row)
211  for (int col = 0; col < N; ++col)
212  m[col][row] -= other.m[col][row];
213  return *this;
214 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE QGenericMatrix< N, M, T > & operator*= ( factor)

Definition at line 217 of file qgenericmatrix.h.

218 {
219  for (int row = 0; row < M; ++row)
220  for (int col = 0; col < N; ++col)
221  m[col][row] *= factor;
222  return *this;
223 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE QGenericMatrix< N, M, T > & operator/= ( divisor)

Definition at line 248 of file qgenericmatrix.h.

249 {
250  for (int row = 0; row < M; ++row)
251  for (int col = 0; col < N; ++col)
252  m[col][row] /= divisor;
253  return *this;
254 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLXDrawable int64_t int64_t divisor
Definition: GLee.h:10690
Q_OUTOFLINE_TEMPLATE bool operator== ( const QGenericMatrix< N, M, T > &  other) const

Definition at line 226 of file qgenericmatrix.h.

227 {
228  for (int row = 0; row < M; ++row)
229  for (int col = 0; col < N; ++col) {
230  if (m[col][row] != other.m[col][row])
231  return false;
232  }
233  return true;
234 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE bool operator!= ( const QGenericMatrix< N, M, T > &  other) const

Definition at line 237 of file qgenericmatrix.h.

238 {
239  for (int row = 0; row < M; ++row)
240  for (int col = 0; col < N; ++col) {
241  if (m[col][row] != other.m[col][row])
242  return true;
243  }
244  return false;
245 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
Q_OUTOFLINE_TEMPLATE void copyDataTo ( T *  values) const

Definition at line 332 of file qgenericmatrix.h.

333 {
334  for (int col = 0; col < N; ++col)
335  for (int row = 0; row < M; ++row)
336  values[row * N + col] = T(m[col][row]);
337 }
GLenum GLenum GLvoid * row
Definition: GLee.h:893
GLboolean GLenum GLenum GLvoid * values
Definition: GLee.h:895
T* data ( )
inline

Definition at line 82 of file qgenericmatrix.h.

82 { return *m; }
const T* data ( ) const
inline

Definition at line 83 of file qgenericmatrix.h.

83 { return *m; }
const T* constData ( ) const
inline

Definition at line 84 of file qgenericmatrix.h.

84 { return *m; }

Friends And Related Function Documentation

friend class QGenericMatrix
friend

Definition at line 110 of file qgenericmatrix.h.

QGenericMatrix<NN, MM, TT> operator+ ( const QGenericMatrix< NN, MM, TT > &  m1,
const QGenericMatrix< NN, MM, TT > &  m2 
)
friend
QGenericMatrix<NN, MM, TT> operator- ( const QGenericMatrix< NN, MM, TT > &  m1,
const QGenericMatrix< NN, MM, TT > &  m2 
)
friend
QGenericMatrix<M1, M2, TT> operator* ( const QGenericMatrix< NN, M2, TT > &  m1,
const QGenericMatrix< M1, NN, TT > &  m2 
)
friend
QGenericMatrix<NN, MM, TT> operator- ( const QGenericMatrix< NN, MM, TT > &  matrix)
friend
QGenericMatrix<NN, MM, TT> operator* ( TT  factor,
const QGenericMatrix< NN, MM, TT > &  matrix 
)
friend
QGenericMatrix<NN, MM, TT> operator* ( const QGenericMatrix< NN, MM, TT > &  matrix,
TT  factor 
)
friend
QGenericMatrix<NN, MM, TT> operator/ ( const QGenericMatrix< NN, MM, TT > &  matrix,
TT  divisor 
)
friend

The documentation for this class was generated from the following file: