Initialisation des modules, création d'une matrice identité

Dans un nouveau fichier entête decl_vect_matr.h on a le code suivant :

#include <d3d9.h>

D3DMATRIX identite(void);

Puis dans le fichier vect_matr.cpp on aura la fonction identite :

#include "decl_vect_matr.h"

D3DMATRIX identite(void) {

// matrice identite
D3DMATRIX ident;
ZeroMemory( &ident, sizeof(D3DMATRIX));

// création de la matrice identité
ident._11 = ident._22 = ident._33 = ident._44 = 1;

return ident;
}


La structure D3DMATRIX qui représente une matrice carrée de 4 x 4 est définie ainsi :

_11 _12 _13 _14
_21 _22 _23 _24
_31 _32 _33 _34
_41 _42 _43 _44

La matrice Identité c'est :

   1       0       0       0   
   0       1       0       0   
   0       0       1       0   
   0       0       0       1   

Dans le fichier source principal on initialise les deux modules.

#include <windows.h>
#include "init_D3D.h"
#include "decl_init_D3D.h"
#include "tutor.h"
#include "decl_vect_matr.h"

...

// Initialise Direct3D

if(( SUCCEEDED( InitD3D(hCtrl_1, LONG_FENETRE, HAUT_FENETRE, &obj_Direct3D, &obj_Direct3DDevice))
&&
SUCCEEDED( InitD3D(hCtrl_2, LONG_FENETRE, HAUT_FENETRE, &obj_Direct3D2, &obj_Direct3DDevice2))
) == E_FAIL)
return -1;

_module_ *module1 = new _module_;
_module_ *module2 = new _module_;

module1->position_cam.x = 0.0f;
module1->position_cam.y = 0.0f;
module1->position_cam.z = -70.0f;
module1->monde = identite();
module1->rot_cam = 0.0f;
module1->coef_rotation_module = 0.0f;
module1->coef_vitesse_module = 0.0f;
module1->coef_cam = 0.0f;
module1->module_rot = 0.0f;
module1->coord_0.x = 0.0f;
module1->coord_0.y = 0.0f;
module1->coord_0.z = -50.0f;
module1->rayon = 20;
module1->collision = 0;
module1->missile = NULL;

module2->position_cam.x = 0.0f;
module2->position_cam.y = 0.0f;
module2->position_cam.z = -70.0f;
module2->monde = identite();
module2->rot_cam = 0.0f;
module2->coef_rotation_module = 0.0f;
module2->coef_vitesse_module = 0.0f;
module2->coef_cam = 0.0f;
module2->module_rot = 0.0f;
module2->coord_0.x = 0.0f;
module2->coord_0.y = 0.0f;
module2->coord_0.z = 50.0f;
module2->rayon = 20;
module2->collision = 0;
module2->missile = NULL;

ShowWindow(hWnd, SW_SHOWDEFAULT);
UpdateWindow(hWnd);

On peut remarquer que la matrice représentant le Monde est à la base une matrice identité.

Téléchargez la source, cliquez ci-dessous :