/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Name: Subdivsion Copyright: Authors: COFFIGNAL Thomas Date: 24/02/09 Description: Subdivision de l'image en paves %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include #include #include #include #include #include #define MAX 256 #define imageParPointeur(i,j,k) (image_ptr + (long int)(i) + largeur*(long int)(j) + largeur*hauteur*(long int)(k)) #define petitCubeParPointeur(i,j,k) (petitCube_ptr + (long int)(i) + largeurPetitCube*(long int)(j) + largeurPetitCube*hauteurPetitCube*(long int)(k)) main() { //Declaration de variables FILE *entree=NULL; FILE *sortie; char nomimage[MAX],nomsortie[MAX]; int largeur, hauteur, profondeur ; int largeurPetitCube, hauteurPetitCube, profondeurPetitCube ; int i,j,k; int nbCubesDansLargeur, nbCubesDansHauteur, nbCubesDansProfondeur ; int iDecalage, jDecalage, kDecalage ; int iCube, jCube, kCube ; int iDansImage,jDansImage,kDansImage ; int xmin,ymin,zmin,xmax,ymax,zmax; long int taille, taillePetitCube ; unsigned char *image_ptr,*petitCube_ptr ; //lecture du nom du fichier a traiter scanf("%s\n",&nomimage); entree = fopen(nomimage,"rb"); //Effacement des petits cubes precedents system("del /Q Resultats\\cubes_decoupes\\*.*"); //Recuperation des donnees du fichier inputPCE scanf("%d %d %d\n",&xmin,&ymin,&zmin); scanf("%d %d %d\n",&xmax,&ymax,&zmax); scanf("%d %d %d\n",&largeurPetitCube,&hauteurPetitCube,&profondeurPetitCube); //Parametrage dimension de l'image largeur=xmax-xmin+1; hauteur=ymax-ymin+1; profondeur=zmax-zmin+1; taille = largeur*hauteur*profondeur ; //Parametrage dimension des pave taillePetitCube = largeurPetitCube*hauteurPetitCube*profondeurPetitCube; //Decoupage nbCubesDansLargeur = largeur/largeurPetitCube; nbCubesDansHauteur = hauteur/hauteurPetitCube; nbCubesDansProfondeur = profondeur/profondeurPetitCube; //Affichage des donnees de decoupe printf("\til y aura %d cubes selon x\n",nbCubesDansLargeur); printf("\til y aura %d cubes selon y\n",nbCubesDansHauteur); printf("\til y aura %d cubes selon z\n",nbCubesDansProfondeur); printf("\tLargeur du petit cube = %d\n",largeurPetitCube); printf("\tHauteur du petit cube = %d\n",hauteurPetitCube); printf("\tProfondeur du petit cube =%d\n",profondeurPetitCube); //Allocation du pointeur de l'image image_ptr = (unsigned char *)malloc(taille*sizeof(unsigned char)); //Lecture du pointeur de l'image fread(image_ptr,sizeof(unsigned char),taille,entree); //Fermeture du fichier fclose(entree); //Allocation du pointeur du petit cube petitCube_ptr = (unsigned char *)malloc(taillePetitCube*sizeof(unsigned char)); //Debut de la subdivision for (iCube=0;iCube