Next: Computer programs for three-dimensional Up: Computer programs for two-dimensional Previous: Listing for sinter3d.c

Listing for oneimage.c

/****************************************************************/
/*                                                              */
/*      Program oneimage.c                                      */
/*      To create a 2-D raw image file from one slice           */
/*      of a 3-D model microstructure                           */
/*                                                              */
/*      Programmer: Dale P. Bentz                               */
/*                  NIST                                        */
/*                  100 Bureau Drive Mail Stop 8621             */
/*                  Gaithersburg, MD  20899-8621                */
/*                  Phone: (301) 975-5865                       */
/*                  E-mail: dale.bentz@.nist.gov                */
/*      Date: Summer 1999                                       */
/*                                                              */
/****************************************************************/

#include <stdio.h>
#include <math.h>

main(){
       FILE *infile,*outfile;
        char filein[80],fileout[80];
        int valin;
        int valout,i1,j1;
        int i,nskip,dx,dy,j,scf,iscale,dxtot,dytot;
        static short int image[1000][1000];
        static short int red[50],green[50],blue[50];

        for(i1=0;i1<50;i1++){
                red[i1]=0;
                green[i1]=0;
                blue[i1]=0;
        }
        for(i1=10;i1<24;i1++){
                red[i1]=192;
                green[i1]=255;
                blue[i1]=128;
        }
        red[12]=0;
        green[12]=0;
        blue[12]=255;
        red[13]=255;
        green[13]=128;
        blue[13]=0;
        red[1]=255;
        green[2]=255;
        blue[2]=255;
        green[3]=255;
        red[4]=255;
        green[4]=255;
        red[5]=128;
        green[5]=128;
        blue[5]=128;
        red[6]=64;
        green[6]=64;
        blue[6]=64;
        red[7]=192;
        green[7]=192;
        blue[7]=192;
        red[8]=255;
        green[8]=128;
        blue[8]=64;
        red[9]=128;
        green[9]=128;
        blue[9]=255;
        red[24]=255;
        blue[24]=255;
        red[35]=255;
        green[35]=255;
        blue[35]=255;
        red[38]=255;
        green[38]=255;
        blue[38]=255;

        printf("Enter name of file with raw (3-D image) data \n");
        scanf("%s",filein);
        printf("%s\n",filein);
        printf("Enter name of image file to create \n");
        scanf("%s",fileout);
        printf("%s\n",fileout);

        printf("Enter number of pixels to skip at start of image file \n");
        scanf("%d",&nskip);
        printf("%d\n",nskip);
        dx=dy=100;

        printf("Enter factor to scale image by\n");
        scanf("%d",&iscale);
        printf("%d\n",iscale);

        infile=fopen(filein,"r");
        outfile=fopen(fileout,"w");

        for(i=0;i<nskip;i++){
                fscanf(infile,"%d",&valin);
        }

        fprintf(outfile,"P3\n");
        fprintf(outfile,"%d %d\n",dx*iscale,dy*iscale);
        fprintf(outfile,"255\n");
        dxtot=dx*iscale;
        dytot=dy*iscale;
        for(j=0;j<dy;j++){
        for(i=0;i<dx;i++){

                fscanf(infile,"%d",&valin);
                valout=valin;
                for(j1=0;j1<iscale;j1++){
                for(i1=0;i1<iscale;i1++){
                        image[i*iscale+i1][j*iscale+j1]=valout;
                }
                }
        }
        }
        fclose(infile);

        for(j=0;j<dytot;j++){
        for(i=0;i<dxtot;i++){
            fprintf(outfile,"%d %d %d\n",red[image[i][j]],green[image[i][j]],
            blue[image[i][j]]);
        }
        }

        fclose(outfile);
}



Next: Computer programs for three-dimensional Up: Computer programs for two-dimensional Previous: Listing for sinter3d.c