Changes between Version 5 and Version 6 of CaoCourseTme1


Ignore:
Timestamp:
Feb 11, 2007, 11:18:52 AM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme1

    v5 v6  
    116116F 1 -1 1 2 10 2 1 -1 1
    117117}}}
    118 Ecrivez le fichier operate.C (ainsi que le fichier associé operate.h), qui contient la fonction operate().
    119 Cette fonction prend en entrée une image définie par un pointeur sur une structure de donnée gmap. Elle applique séquenciellement les transformations définies dans le fichier de commandes, et renvoie un pointeur sur la structure de donnée gmap contenant l'image résultante.
     118Ecriver le fichier operate.C (ainsi que le fichier associé operate.h), qui contient la fonction operate().
     119Cette fonction prend en entrée une image définie par un pointeur sur une structure de donnée gmap.
     120Elle applique séquenciellement les transformations définies dans le fichier de commandes,
     121et renvoie un pointeur sur la structure de donnée gmap contenant l'image résultante.
    120122{{{
    121123gmap *operate(FILE *commande, gmap *in);
    122124}}} 
     125On définira une fonction par type de commandes. Ces 7 fonctions prennent pour nom le caractère
     126définissant la commande, et possèdent deux arguments: un pointeur sur l'image source, et un pointeur
     127sur l'image résultat. Les deux structures de données doivent donc avoir été allouées en mémoire
     128préalablement (pas de malloc() dans ces fonctions.
     129{{{
     130void X(gmap *mapin, gmap *mapout);
     131}
     132Pour cette étape, les fonctions de traitement se contentent de recopier mapin dans mapout,
     133et d'afficher le message:
     134{{{
     135Operation X non implementee
     136}}
    123137
    124 = Etape 4 : Fonctions de traitement de l'image =
     138= Etape 4 : opérations S,X,Y,P,M =
     139
     140Implémentez successivement les fonctions S, X, Y P, M.
     141Il faut calculer tous les pixels de l'image, en exécutant deux boucles for imbriquées
     142pour parcourir les lignes et les colonnes. Le coeur de ces fonctions sera toujours
     143de la forme :
     144{{{
     145for(y = 0 ; y < heigth ; y++) {
     146  for(x = 0 ; x < width ; x++) {
     147    ELM(mapout, U(x,y), V(x,y)) = ELM(mapin, x, y);
     148  }
     149}
     150}}}
     151Pour alléger l'écriture, on définira la macro ELM(map,x,y) qui permet de désigner
     152le pixel de coordonnées (x,y) dans l'image désignée par le pointeur map.
     153{{{
     154#define ELM(map,x,y)  map->raster[y*map->width + x]
     155}}}
     156La difficulté est évidedmment de définir les expressions arithmétiques
     157U(x,y) et V(x,y) pour chacune des opérations à implémenter.
     158
     159= Etape 5 : =