 |
VTK
9.0.1
|
Go to the documentation of this file.
29 #ifndef vtkMatrix4x4_h
30 #define vtkMatrix4x4_h
32 #include "vtkCommonMathModule.h"
80 this->DeepCopy(*this->Element, elements);
92 static void Zero(
double elements[16]);
119 static void Invert(
const double inElements[16],
double outElements[16]);
130 static void Transpose(
const double inElements[16],
double outElements[16]);
145 static void MultiplyPoint(
const double elements[16],
const float in[4],
float out[4]);
146 static void MultiplyPoint(
const double elements[16],
const double in[4],
double out[4]);
154 return this->MultiplyDoublePoint(in);
158 this->MultiplyPoint(in, this->FloatPoint);
159 return this->FloatPoint;
163 this->MultiplyPoint(in, this->DoublePoint);
164 return this->DoublePoint;
172 static void Multiply4x4(
const double a[16],
const double b[16],
double c[16]);
182 static void Adjoint(
const double inElements[16],
double outElements[16]);
193 void SetElement(
int i,
int j,
double value);
198 double GetElement(
int i,
int j)
const {
return this->Element[i][j]; }
208 const double*
GetData()
const {
return *this->Element; }
215 double DoublePoint[4];
228 for (
int i = 0; i < 16; i += 4)
230 for (
int j = 0; j < 4; j++)
233 a[i + 0] * b[j + 0] + a[i + 1] * b[j + 4] + a[i + 2] * b[j + 8] + a[i + 3] * b[j + 12];
237 for (
int k = 0; k < 16; k++)
263 return M[0] == 1.0 && M[1] == 0.0 && M[2] == 0.0 && M[3] == 0.0 && M[4] == 0.0 && M[5] == 1.0 &&
264 M[6] == 0.0 && M[7] == 0.0 && M[8] == 0.0 && M[9] == 0.0 && M[10] == 1.0 && M[11] == 0.0 &&
265 M[12] == 0.0 && M[13] == 0.0 && M[14] == 0.0 && M[15] == 1.0;
void SetElement(int i, int j, double value)
Sets the element i,j in the matrix.
void DeepCopy(const vtkMatrix4x4 *source)
Set the elements of the matrix to the same values as the elements of the given source matrix.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
double Element[4][4]
The internal data is public for historical reasons. Do not use!
static void DeepCopy(double destination[16], const vtkMatrix4x4 *source)
Set the elements of the given destination buffer to the same values as the elements of the given sour...
static double Determinant(const double elements[16])
float * MultiplyPoint(const float in[4])
For use in Java or Python.
double GetElement(int i, int j) const
Returns the element i,j from the matrix.
void MultiplyPoint(const double in[4], double out[4])
virtual void Modified()
Update the modification time for this object.
abstract base class for most VTK objects
double Determinant()
Compute the determinant of the matrix and return it.
static void Adjoint(const double inElements[16], double outElements[16])
const double * GetData() const
Returns the raw double array holding the matrix.
bool IsIdentity()
Returns true if this matrix is equal to the identity matrix.
double * MultiplyPoint(const double in[4])
static void Zero(double elements[16])
double * GetData()
Returns the raw double array holding the matrix.
static vtkMatrix4x4 * New()
Construct a 4x4 identity matrix.
#define VTK_SIZEHINT(...)
void Adjoint(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
Compute adjoint of the matrix and put it into out.
static void MultiplyPoint(const double elements[16], const double in[4], double out[4])
void MultiplyPoint(const float in[4], float out[4])
Multiply a homogeneous coordinate by this matrix, i.e.
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
static void Invert(const double inElements[16], double outElements[16])
static void DeepCopy(double destination[16], const double source[16])
Copies the given source buffer to the given destination buffer.
float * MultiplyFloatPoint(const float in[4])
static void MultiplyPoint(const double elements[16], const float in[4], float out[4])
static void Multiply4x4(const vtkMatrix4x4 *a, const vtkMatrix4x4 *b, vtkMatrix4x4 *c)
Multiplies matrices a and b and stores the result in c.
void DeepCopy(const double elements[16])
Non-static member function.
static void Invert(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
Matrix Inversion (adapted from Richard Carling in "Graphics Gems," Academic Press,...
static void Transpose(const double inElements[16], double outElements[16])
double * MultiplyDoublePoint(const double in[4])
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
static void Identity(double elements[16])
void Identity()
Set equal to Identity matrix.
void Zero()
Set all of the elements to zero.
static void Transpose(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
Transpose the matrix and put it into out.