32 #ifndef __vtkMatrix4x4_h
33 #define __vtkMatrix4x4_h
35 #include "vtkCommonMathModule.h"
36 #include "vtkObject.h"
56 void PrintSelf(ostream& os, vtkIndent indent);
66 static void DeepCopy(
double Elements[16],
const double newElements[16]);
73 { this->DeepCopy(*this->Element,Elements); this->Modified(); }
81 static void Zero(
double Elements[16]);
90 static void Identity(
double Elements[16]);
102 static void Invert(
const double inElements[16],
double outElements[16]);
114 static void Transpose(
const double inElements[16],
double outElements[16]);
128 static void MultiplyPoint(
const double Elements[16],
129 const float in[4],
float out[4]);
130 static void MultiplyPoint(
const double Elements[16],
131 const double in[4],
double out[4]);
138 {
return this->MultiplyFloatPoint(in); }
140 {this->MultiplyPoint(in,this->FloatPoint);
return this->FloatPoint; }
142 {this->MultiplyPoint(in,this->DoublePoint);
return this->DoublePoint; }
150 static void Multiply4x4(
const double a[16],
const double b[16],
160 static void Adjoint(
const double inElements[16],
double outElements[16]);
168 static double Determinant(
const double Elements[16]);
173 void SetElement(
int i,
int j,
double value);
178 {
return this->Element[i][j];}
183 {
return &(this->Element[i][0]);}
185 {
return &(this->Element[i][0]); }
187 {this->Adjoint(&in,&out);}
189 {
return this->Determinant(&in);}
193 {this->Invert(&in,&out);}
195 {this->Transpose(&in,&out);}
196 static void PointMultiply(
const double Elements[16],
197 const float in[4],
float out[4]);
198 static void PointMultiply(
const double Elements[16],
199 const double in[4],
double out[4]);
207 double DoublePoint[4];
215 if (this->
Element[i][j] != value)
void Transpose(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
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)
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)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
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)