topical media & game development
graphic-directx-game-part-I-D3DXMATRIX-main.cpp / cpp
include <d3dx9.h>
include <iostream>
using namespace std;
// Overload the "<<" operators so that we can use cout to
// output D3DXVECTOR4 and D3DXMATRIX objects.
ostream& operator<<(ostream& os, D3DXVECTOR4& v)
{
os << "(" << v.x << ", " << v.y << ", " << v.z << ", " << v.w << ")";
return os;
}
ostream& operator<<(ostream& os, D3DXMATRIX& m)
{
for(int i = 0; i < 4; ++i)
{
for(int j = 0; j < 4; ++j)
os << m(i, j) << " ";
os << endl;
}
return os;
}
int main()
{
D3DXMATRIX A(1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 2.0f, 0.0f, 0.0f,
0.0f, 0.0f, 4.0f, 0.0f,
1.0f, 2.0f, 3.0f, 1.0f);
D3DXMATRIX B;
D3DXMatrixIdentity(&B);
// matrix-matrix multiplication
D3DXMATRIX C = A*B;
D3DXMATRIX D, E, F;
D3DXMatrixTranspose(&D, &A);
D3DXMatrixInverse(&E, 0, &A);
F = A * E;
D3DXVECTOR4 P(2.0f, 2.0f, 2.0f, 1.0f);
D3DXVECTOR4 Q;
D3DXVec4Transform(&Q, &P, &A);
cout << "A = " << endl << A << endl;
cout << "B = " << endl << B << endl;
cout << "C = A*B = " << endl << C << endl;
cout << "D = transpose(A)= " << endl << D << endl;
cout << "E = inverse(A) = " << endl << E << endl;
cout << "F = A*E = " << endl << F << endl;
cout << "P = " << P << endl;
cout << "Q = P*A = " << Q << endl;
return 0;
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.