12 #ifndef ossimMatrix4x4_HEADER 13 #define ossimMatrix4x4_HEADER 32 double v10,
double v11,
double v12,
double v13,
33 double v20,
double v21,
double v22,
double v23,
34 double v30,
double v31,
double v32,
double v33);
39 theData[0][0] = rhs.
theData[0][0];
40 theData[0][1] = rhs.
theData[0][1];
41 theData[0][2] = rhs.
theData[0][2];
42 theData[0][3] = rhs.
theData[0][3];
43 theData[1][0] = rhs.
theData[1][0];
44 theData[1][1] = rhs.
theData[1][1];
45 theData[1][2] = rhs.
theData[1][2];
46 theData[1][3] = rhs.
theData[1][3];
47 theData[2][0] = rhs.
theData[2][0];
48 theData[2][1] = rhs.
theData[2][1];
49 theData[2][2] = rhs.
theData[2][2];
50 theData[2][3] = rhs.
theData[2][3];
51 theData[3][0] = rhs.
theData[3][0];
52 theData[3][1] = rhs.
theData[3][1];
53 theData[3][2] = rhs.
theData[3][2];
54 theData[3][3] = rhs.
theData[3][3];
64 theData[1][0] + rhs.
theData[1][0], theData[1][1] + rhs.
theData[1][1], theData[1][2] + rhs.
theData[1][2], theData[1][3] + rhs.
theData[1][3],
65 theData[2][0] + rhs.
theData[2][0], theData[2][1] + rhs.
theData[2][1], theData[2][2] + rhs.
theData[2][2], theData[2][3] + rhs.
theData[2][3],
66 theData[3][0] + rhs.
theData[3][0], theData[3][1] + rhs.
theData[3][1], theData[3][2] + rhs.
theData[3][2], theData[3][3] + rhs.
theData[3][3]);
71 theData[1][0] - rhs.
theData[1][0], theData[1][1] - rhs.
theData[1][1], theData[1][2] - rhs.
theData[1][2], theData[1][3] - rhs.
theData[1][3],
72 theData[2][0] - rhs.
theData[2][0], theData[2][1] - rhs.
theData[2][1], theData[2][2] - rhs.
theData[2][2], theData[2][3] - rhs.
theData[2][3],
73 theData[3][0] - rhs.
theData[3][0], theData[3][1] - rhs.
theData[3][1], theData[3][2] - rhs.
theData[3][2], theData[3][3] - rhs.
theData[3][3]);
93 return ossimColumnVector4d( (theData[0][0]*rhs[0] + theData[0][1]*rhs[1] + theData[0][2]*rhs[2]),
94 (theData[1][0]*rhs[0] + theData[1][1]*rhs[1] + theData[1][2]*rhs[2]),
95 (theData[2][0]*rhs[0] + theData[2][1]*rhs[1] + theData[2][2]*rhs[2]));
100 return ossimColumnVector3d( (theData[0][0]*rhs[0] + theData[0][1]*rhs[1] + theData[0][2]*rhs[2]),
101 (theData[1][0]*rhs[0] + theData[1][1]*rhs[1] + theData[1][2]*rhs[2]),
102 (theData[2][0]*rhs[0] + theData[2][1]*rhs[1] + theData[2][2]*rhs[2]));
106 return ossimMatrix4x4(theData[0][0]*scalar, theData[0][1]*scalar, theData[0][2]*scalar, theData[0][3]*scalar,
107 theData[1][0]*scalar, theData[1][1]*scalar, theData[1][2]*scalar, theData[1][3]*scalar,
108 theData[2][0]*scalar, theData[2][1]*scalar, theData[2][2]*scalar, theData[2][3]*scalar,
109 theData[0][0]*scalar, theData[0][1]*scalar, theData[0][2]*scalar, theData[0][3]*scalar);
118 theData[0][1]*rhs.
theData[1][0] +
119 theData[0][2]*rhs.
theData[2][0] +
120 theData[0][3]*rhs.
theData[3][0]);
124 theData[0][1]*rhs.
theData[1][1] +
125 theData[0][2]*rhs.
theData[2][1] +
126 theData[0][3]*rhs.
theData[3][1]);
130 theData[0][1]*rhs.
theData[1][2] +
131 theData[0][2]*rhs.
theData[2][2] +
132 theData[0][3]*rhs.
theData[3][2]);
136 theData[0][1]*rhs.
theData[1][3] +
137 theData[0][2]*rhs.
theData[2][3] +
138 theData[0][3]*rhs.
theData[3][3]);
142 theData[1][1]*rhs.
theData[1][0] +
143 theData[1][2]*rhs.
theData[2][0] +
144 theData[1][3]*rhs.
theData[3][0]);
148 theData[1][1]*rhs.
theData[1][1] +
149 theData[1][2]*rhs.
theData[2][1] +
150 theData[1][3]*rhs.
theData[3][1]);
154 theData[1][1]*rhs.
theData[1][2] +
155 theData[1][2]*rhs.
theData[2][2] +
156 theData[1][3]*rhs.
theData[3][2]);
160 theData[1][1]*rhs.
theData[1][3] +
161 theData[1][2]*rhs.
theData[2][3] +
162 theData[1][3]*rhs.
theData[3][3]);
166 theData[2][1]*rhs.
theData[1][0] +
167 theData[2][2]*rhs.
theData[2][0] +
168 theData[2][3]*rhs.
theData[3][0]);
172 theData[2][1]*rhs.
theData[1][1] +
173 theData[2][2]*rhs.
theData[2][1] +
174 theData[2][3]*rhs.
theData[3][1]);
178 theData[2][1]*rhs.
theData[1][2] +
179 theData[2][2]*rhs.
theData[2][2] +
180 theData[2][3]*rhs.
theData[3][2]);
184 theData[2][1]*rhs.
theData[1][3] +
185 theData[2][2]*rhs.
theData[2][3] +
186 theData[2][3]*rhs.
theData[3][3]);
190 theData[3][1]*rhs.
theData[1][0] +
191 theData[3][2]*rhs.
theData[2][0] +
192 theData[3][3]*rhs.
theData[3][0]);
196 theData[3][1]*rhs.
theData[1][1] +
197 theData[3][2]*rhs.
theData[2][1] +
198 theData[3][3]*rhs.
theData[3][1]);
202 theData[3][1]*rhs.
theData[1][2] +
203 theData[3][2]*rhs.
theData[2][2] +
204 theData[3][3]*rhs.
theData[3][2]);
208 theData[3][1]*rhs.
theData[1][3] +
209 theData[3][2]*rhs.
theData[2][3] +
210 theData[3][3]*rhs.
theData[3][3]);
220 theData = theData.
i();
230 theData = theData.
t();
240 return theData.Determinant();
254 static NEWMAT::Matrix createIdentity();
255 static NEWMAT::Matrix createRotateOnly(
const ossimMatrix4x4& aMatrix);
257 static NEWMAT::Matrix createZero();
258 static NEWMAT::Matrix createTranslationMatrix(
double x,
261 static NEWMAT::Matrix createRotationMatrix(
double angleX,
265 static NEWMAT::Matrix createRotationXMatrix(
double angle,
267 static NEWMAT::Matrix createRotationYMatrix(
double angle,
269 static NEWMAT::Matrix createRotationZMatrix(
double angle,
272 static NEWMAT::Matrix createScaleMatrix(
double X,
double Y,
double Z);
274 const NEWMAT::Matrix&
getData()
const{
return theData;}
const NEWMAT::Matrix & getData() const
ossimMatrix4x4 operator*(double scalar) const
ossimRationalNumber operator-(ossim_int32 i, ossimRationalNumber &r)
ossimMatrix4x4 operator*(const ossimMatrix4x4 &rhs) const
bool almostEqual(T x, T y, T tolerance=FLT_EPSILON)
double getDeterminant() const
ossimMatrix4x4(const ossim::Quaternion &quat)
ossimRationalNumber operator*(ossim_int32 i, ossimRationalNumber &r)
ossimColumnVector4d rotateOnly(const ossimColumnVector4d &rhs) const
NEWMAT::Matrix & getData()
friend std::ostream & operator<<(std::ostream &out, const ossimMatrix4x4 &data)
ossimColumnVector3d rotateOnly(const ossimColumnVector3d &rhs) const
bool isEqualTo(const ossimMatrix4x4 &rhs, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
ossimMatrix4x4(const ossimMatrix4x4 &rhs)
ossimRationalNumber operator+(ossim_int32 i, ossimRationalNumber &r)
std::basic_ostream< char > ostream
Base class for char output streams.