32 #ifndef __vtkMatrix4x4_h
33 #define __vtkMatrix4x4_h
65 static void DeepCopy(
double Elements[16],
const double newElements[16]);
72 { this->DeepCopy(*this->Element,Elements); this->
Modified(); }
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]);
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]);
137 {
return this->MultiplyFloatPoint(in); }
139 {this->MultiplyPoint(in,this->FloatPoint);
return this->FloatPoint; }
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);
177 {
return this->Element[i][j];}
182 {
return &(this->Element[i][0]);}
184 {
return &(this->Element[i][0]); }
186 {this->Adjoint(&in,&out);}
188 {
return this->Determinant(&in);}
192 {this->Invert(&in,&out);}
194 {this->Transpose(&in,&out);}
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)
void Transpose(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
abstract base class for most VTK objects
represent and manipulate 4x4 transformation matrices
void Adjoint(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
float * MultiplyFloatPoint(const float in[4])
double GetElement(int i, int j) const
static void Multiply4x4(const vtkMatrix4x4 *a, const vtkMatrix4x4 *b, vtkMatrix4x4 *c)
void SetElement(int i, int j, double value)
void MultiplyPoint(const double in[4], double out[4])
void MultiplyPoint(const float in[4], float out[4])
void DeepCopy(const vtkMatrix4x4 *source)
virtual void PrintSelf(ostream &os, vtkIndent indent)
a simple class to control print indentation
static void Invert(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
double * MultiplyDoublePoint(const double in[4])
const double * operator[](unsigned int i) const
static void DeepCopy(double Elements[16], const vtkMatrix4x4 *source)
static void Transpose(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
double Determinant(vtkMatrix4x4 *in)
void Invert(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
float * MultiplyPoint(const float in[4])
double Determinant(vtkMatrix4x4 &in)
void DeepCopy(const double Elements[16])
void Adjoint(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
double * operator[](const unsigned int i)