Bonjour,
J’ai une fonction ecrite en system C qu e je dois la modéliser en systemc ..et je ne sais pas comment faire.
Le fonction contient des structures de donnée..la voila :
/////////////////////////////////////////////////////////////////////////
// transformation - multiplication de chaque sommet par la matrice //
/////////////////////////////////////////////////////////////////////////

#include<systemc.h>
// Structure pour representer un point dans un espace 2D
typedef struct _2D
{
int x,y;
unsigned char couleur;
};
typedef struct _3D
{
float x,y,z;
};
//------------------------- VARIABLES GLOBALES ------------------------//
#define MX 160 // Millieu de l'abscisse
#define MY 100 // Millieu de l'ordonnee
#define DISTANCE 250 // Distances de l'obervateur
#define MAX_POLY 150 // Nb max de polygones
#define MAX_SOMM 75 // Nb max de sommets
// Structure qui definie un sommet avec ses differentes coordonnees

typedef struct _sommet
{
_2D ecran; // coordonnees d'ecran
_3D local; // coordonnees locales
_3D monde; // coordonnees dans le monde
_3D normale; // normale au sommet
};
typedef struct _tri
{
short a,b,c; // trois points d'un triangle
unsigned char col; // couleur de la face
float z; // profondeur z moyenne (pour tri)
_3D normale; // normale de la face
};
typedef struct _objet
{
int nbsommet, nbpolygone; // nombre de sommets et de polygones
_sommet sommet[MAX_SOMM]; // coordonnees des sommets
_tri poly[MAX_POLY]; // polygones (triangles)
};

_objet unObjet; // un objet 3D


// type matrice reelle de 4x4
typedef float _mat4x4[4][4];
/////////////////////////////////////////////////////////////////////////
// projection - transformation 3D -> 2D //
/////////////////////////////////////////////////////////////////////////
void projection(_sommet *sommet)
{
sommet->ecran.x = sommet->monde.x * DISTANCE / sommet->monde.z + MX;
sommet->ecran.y = sommet->monde.y * DISTANCE / sommet->monde.z + MY;
}


void tranform::do_transform(_mat4x4 m)
{
_sommet *sommet;

for(int v=0; v<unObjet.nbsommet; v++)
{
sommet = &unObjet.sommet[v];

sommet->monde.x = sommet->local.x*m[0][0]+
sommet->local.y*m[1][0]+
sommet->local.z*m[2][0]+
m[3][0];

sommet->monde.y = sommet->local.x*m[0][1]+
sommet->local.y*m[1][1]+
sommet->local.z*m[2][1]+
m[3][1];

sommet->monde.z = sommet->local.x*m[0][2]+
sommet->local.y*m[1][2]+
sommet->local.z*m[2][2]+
m[3][2];
projection(sommet);
}
}

Est-ce que quel’qu’un peut m’aider ?
Merci d’avance !