|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.