Annotation of researchv8dc/cmd/view2d/rksmith/rkstri.c, revision 1.1.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.