Annotation of researchv8dc/cmd/view2d/rksmith/rkstri.c, revision 1.1

1.1     ! root        1: /*
        !             2:   ...read triangle-format movie file...
        !             3:     nv
        !             4:       vx(i), vy(i)   i=1,nv
        !             5:     nt
        !             6:       itri(1..3,it)    it=1,nt
        !             7:     time, fmin, fmax
        !             8:       fk(i)   i=1,nv    in compressed format
        !             9: 
        !            10: if nv=0 or nt=0, use same values as for previous frame
        !            11: 
        !            12: WARNING.  If vx,vy bounding box changes, so will grid. 
        !            13: */
        !            14: 
        !            15: #include <stdio.h>
        !            16: #include "view2d.h"
        !            17: #define INF 1e25
        !            18: char *progname;
        !            19: 
        !            20: int mx, my;  /* output grid */
        !            21: float *tr, *f;
        !            22: int nv, nt;
        !            23: float *vx, *vy, *fk;
        !            24: int *itri;
        !            25: float xmin, xmax, ymin, ymax;
        !            26: int verbose;
        !            27: 
        !            28: main(argc,argv)
        !            29:   int argc;
        !            30:   char **argv;
        !            31: {
        !            32:   int i, ifr;
        !            33:   char *Malloc();
        !            34: 
        !            35:   progname = argv[0];
        !            36:   mx = 5; my = 5;
        !            37:   verbose = 0;
        !            38:   for(argc--, argv++; *argv; argv++){
        !            39:     if(**argv == '-' ){
        !            40:       switch(argv[0][1]) {
        !            41:       case 'n':
        !            42:        i = sscanf(&argv[0][2], "%d,%d", &mx, &my);
        !            43:        if(i==1) my = mx;
        !            44:        else if(i!=2) error("options:  -nmx,my");
        !            45:        break;
        !            46:       case 'v':
        !            47:         verbose++;
        !            48:        break;
        !            49:       }
        !            50:     }
        !            51:   }
        !            52:   
        !            53:   i = mx*my*sizeof(float);
        !            54:   tr = (float *)Malloc(i);
        !            55:   f  = (float *)Malloc(i);
        !            56:   nv = 0;
        !            57:   nt = 0;
        !            58:   while(fr()){
        !            59:     if(verbose)fprintf(stderr,"frame %d done\n",ifr++);
        !            60:   }
        !            61: 
        !            62:   exit(0);
        !            63: }
        !            64: 
        !            65: fr()
        !            66: {
        !            67:   int new_nv, new_nt;
        !            68:   int i, j;
        !            69:   float time, fmin, fmax, floor;
        !            70:   char *Malloc();
        !            71: 
        !            72:   i = scanf("%d",&new_nv);
        !            73:   if( i == EOF ) return(0);
        !            74:   if(verbose)fprintf(stderr,"nv=%d\n",new_nv);
        !            75:   if( nv==0 ){
        !            76:     if(new_nv==0) error("nv must be nonzero for first frame");
        !            77:   }else{
        !            78:     if(new_nv!=0){
        !            79:       free((char *)fk);
        !            80:       free((char *)vx);
        !            81:       free((char *)vy);
        !            82:     }
        !            83:   }
        !            84:   if((nv==0)||(new_nv!=0)){
        !            85:     nv = new_nv;
        !            86:     i = nv*sizeof(float);
        !            87:     fk = (float *)Malloc(i);
        !            88:     vx = (float *)Malloc(i);
        !            89:     vy = (float *)Malloc(i);
        !            90:     xmin = INF; xmax = -INF;
        !            91:     ymin = INF; ymax = -INF;
        !            92:     for(j=0; j<nv; j++){
        !            93:       i = scanf("%e %e",vx+j,vy+j);
        !            94:       if( i == EOF ) error("unexpected EOF");
        !            95:       if( i!=2 ) error("bad format");
        !            96:       if(vx[j]<xmin) xmin=vx[j];
        !            97:       if(vx[j]>xmax) xmax=vx[j];
        !            98:       if(vy[j]<ymin) ymin=vy[j];
        !            99:       if(vy[j]>ymax) ymax=vy[j];
        !           100:     }
        !           101:   }
        !           102: 
        !           103:   i = scanf("%d",&new_nt);
        !           104:   if( i == EOF ) error("unexpected EOF");
        !           105:   if(verbose)fprintf(stderr,"nt=%d\n",new_nt);
        !           106:   if( nt==0 ){
        !           107:     if(new_nt==0) error("automatic triangulation not implemented yet");
        !           108:   }else{
        !           109:     if(nt!=0){
        !           110:       free((char *)itri);
        !           111:     }
        !           112:   }
        !           113:   if((nt==0)||(new_nt!=0)){
        !           114:     nt = new_nt;
        !           115:     i = 3*nt*sizeof(int);
        !           116:     itri = (int *)Malloc(i);
        !           117:     for(j=0; j<nt; j++){
        !           118:       i = scanf("%d %d %d",itri+3*j,itri+1+3*j,itri+2+3*j);
        !           119:       if( i == EOF ) error("unexpected EOF");
        !           120:       if( i!=3 ) error("bad format");
        !           121:     }
        !           122:     macbox_( &nv,vx,vy,&nt,itri,
        !           123:        &mx,&xmin,&xmax,&my,&ymin,&ymax,tr);
        !           124:     if(verbose){
        !           125:       fprintf(stderr,"tr=");
        !           126:       for(i=0;i<mx*my;i++){
        !           127:         fprintf(stderr," %f",tr[i]);
        !           128:       }
        !           129:       fprintf(stderr,"\n");
        !           130:     }
        !           131:   }
        !           132: 
        !           133:   i = scanf("%e %f %f\n", &time, &fmin, &fmax);
        !           134:   if( i != 3 ) error("bad format");
        !           135:   for(j=0; j<nv; j++){
        !           136:     i = scanf("%e",fk+j);
        !           137:     if( i == EOF ) error("unexpected EOF");
        !           138:     if( i != 1 ) error("bad format");
        !           139:   }
        !           140: 
        !           141: 
        !           142:   floor = -INF;
        !           143:   intbox_(&mx,&xmin,&xmax,&my,&ymin,&ymax,f,tr,
        !           144:      &nv,fk,&floor,vx,vy,itri);
        !           145:   if(verbose){
        !           146:     fprintf(stderr,"f=\n");
        !           147:     for(j=0;j<my;j++){
        !           148:       for(i=0;i<mx;i++){
        !           149:         fprintf(stderr," %g",f[i+mx*j]);
        !           150:       }
        !           151:       fprintf(stderr,"\n");
        !           152:     }
        !           153:   }
        !           154:   
        !           155:   moviefil(1,mx,my,time,floor,f);
        !           156: 
        !           157:   return(1);
        !           158: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.