Skip Nav
Home » Forums » SystemC Forum

Icon - KMLM List KMLM List

View email archives for the history of this mailing list.

List Home All Archives Dates Threads Authors Subjects
systemc-forum - conversion c en systemC Message Thread: Previous | Next
  • To: <systemc-forum@xxxxxxxxxxxxxxxxxxx>
  • From: "Tounsi Maroua" <tounsi.maroua@xxxxxxxxx>
  • Date: Sun, 26 Feb 2012 14:54:05 +0100
  • Cc: <tounsi.maroua@xxxxxxxxx>
Send Email to systemc-forum@lists.accellera.org:
Send new message
Reply to this message

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 !


By Date: Previous | Next Current Thread By Thread: Previous | Next
  • conversion c en systemC, Tounsi Maroua  (you are here)