29 #ifndef __vtkMatrix3x3_h
30 #define __vtkMatrix3x3_h
60 static void DeepCopy(
double Elements[9],
const double newElements[9]);
66 void DeepCopy(
const double Elements[9])
75 static void Zero(
double Elements[9]);
84 static void Identity(
double Elements[9]);
96 static void Invert(
const double inElements[9],
double outElements[9]);
108 static void Transpose(
const double inElements[9],
double outElements[9]);
115 void MultiplyPoint(
const float in[3],
float out[3])
117 void MultiplyPoint(
const double in[3],
double out[3])
122 static void MultiplyPoint(
const double Elements[9],
123 const float in[3],
float out[3]);
124 static void MultiplyPoint(
const double Elements[9],
125 const double in[3],
double out[3]);
133 static void Multiply3x3(
const double a[9],
const double b[9],
143 static void Adjoint(
const double inElements[9],
double outElements[9]);
151 static double Determinant(
const double Elements[9]);
156 void SetElement(
int i,
int j,
double value);
160 double GetElement(
int i,
int j)
const
161 {
return this->Element[i][j];}
165 double *operator[](
const unsigned int i)
166 {
return &(this->Element[i][0]);}
167 const double *operator[](
unsigned int i)
const
168 {
return &(this->Element[i][0]); }
181 static void PointMultiply(
const double Elements[9],
182 const float in[3],
float out[3]);
183 static void PointMultiply(
const double Elements[9],
184 const double in[3],
double out[3]);
199 double Element[3][3];
209 if (this->
Element[i][j] != value)
219 if (M[0] == 1.0 && M[4] == 1.0 && M[8] == 1.0 &&
220 M[1] == 0.0 && M[2] == 0.0 && M[3] == 0.0 && M[5] == 0.0 &&
221 M[6] == 0.0 && M[7] == 0.0)
233 for (
int i = 0; i < 3; ++i)
235 for (
int j = 0; j < 3; ++j)
248 for (
int i = 0; i < 3; ++i)
250 for (
int j = 0; j < 3; ++j)