29 #ifndef __vtkMatrix3x3_h
30 #define __vtkMatrix3x3_h
60 static void DeepCopy(
double Elements[9],
const double newElements[9]);
67 { this->DeepCopy(*this->Element,Elements); this->
Modified(); }
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]);
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);
161 {
return this->Element[i][j];}
166 {
return &(this->Element[i][0]);}
168 {
return &(this->Element[i][0]); }
172 {this->Adjoint(&in,&out);}
174 {
return this->Determinant(&in);}
178 {this->Invert(&in,&out);}
180 {this->Transpose(&in,&out);}
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)
void DeepCopy(vtkMatrix3x3 *source)
void Adjoint(vtkMatrix3x3 *in, vtkMatrix3x3 *out)
bool operator!=(const vtkMatrix3x3 &)
abstract base class for most VTK objects
void DeepCopy(const double Elements[9])
void Transpose(vtkMatrix3x3 &in, vtkMatrix3x3 &out)
void Invert(vtkMatrix3x3 &in, vtkMatrix3x3 &out)
const double * operator[](unsigned int i) const
static void Transpose(vtkMatrix3x3 *in, vtkMatrix3x3 *out)
static void DeepCopy(double Elements[9], vtkMatrix3x3 *source)
static void Multiply3x3(vtkMatrix3x3 *a, vtkMatrix3x3 *b, vtkMatrix3x3 *c)
double GetElement(int i, int j) const
void Adjoint(vtkMatrix3x3 &in, vtkMatrix3x3 &out)
VTK_COMMON_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
virtual void PrintSelf(ostream &os, vtkIndent indent)
a simple class to control print indentation
double Determinant(vtkMatrix3x3 *in)
void SetElement(int i, int j, double value)
double * operator[](const unsigned int i)
bool operator==(const vtkMatrix3x3 &)
double Determinant(vtkMatrix3x3 &in)
static void Invert(vtkMatrix3x3 *in, vtkMatrix3x3 *out)
VTK_COMMON_EXPORT bool operator!=(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
void MultiplyPoint(const float in[3], float out[3])
represent and manipulate 3x3 transformation matrices
void MultiplyPoint(const double in[3], double out[3])