32 #ifndef __vtkMatrix4x4_h
33 #define __vtkMatrix4x4_h
65 static void DeepCopy(
double Elements[16],
const double newElements[16]);
71 void DeepCopy(
const double Elements[16])
80 static void Zero(
double Elements[16]);
89 static void Identity(
double Elements[16]);
101 static void Invert(
const double inElements[16],
double outElements[16]);
113 static void Transpose(
const double inElements[16],
double outElements[16]);
120 void MultiplyPoint(
const float in[4],
float out[4])
122 void MultiplyPoint(
const double in[4],
double out[4])
127 static void MultiplyPoint(
const double Elements[16],
128 const float in[4],
float out[4]);
129 static void MultiplyPoint(
const double Elements[16],
130 const double in[4],
double out[4]);
136 float *MultiplyPoint(
const float in[4])
137 {
return this->MultiplyFloatPoint(in); }
138 float *MultiplyFloatPoint(
const float in[4])
139 {this->MultiplyPoint(in,this->FloatPoint);
return this->FloatPoint; }
140 double *MultiplyDoublePoint(
const double in[4])
141 {this->MultiplyPoint(in,this->DoublePoint);
return this->DoublePoint; }
149 static void Multiply4x4(
const double a[16],
const double b[16],
159 static void Adjoint(
const double inElements[16],
double outElements[16]);
167 static double Determinant(
const double Elements[16]);
172 void SetElement(
int i,
int j,
double value);
176 double GetElement(
int i,
int j)
const
177 {
return this->Element[i][j];}
181 double *operator[](
const unsigned int i)
182 {
return &(this->Element[i][0]);}
183 const double *operator[](
unsigned int i)
const
184 {
return &(this->Element[i][0]); }
195 static void PointMultiply(
const double Elements[16],
196 const float in[4],
float out[4]);
197 static void PointMultiply(
const double Elements[16],
198 const double in[4],
double out[4]);
206 double DoublePoint[4];
214 if (this->
Element[i][j] != value)