|
|
1.1 ! root 1: /* undocumented feature: ! 2: -clx,x,x,x sets contour levels at x, x, x, and x. up to 8 levels allowed. ! 3: */ ! 4: #include <stdio.h> ! 5: #include <math.h> ! 6: #include "view2d.h" ! 7: ! 8: extern Rd2d rd; ! 9: char *progname; ! 10: short timewarp; ! 11: double ts, te; ! 12: ! 13: main(argc,argv) ! 14: int argc; ! 15: char **argv; ! 16: { ! 17: float *p, *pict; ! 18: float u2, v2, pow2(); ! 19: short *v, *q; ! 20: char *map; ! 21: int prange; ! 22: int ncontour = 6; ! 23: int i, j, r; ! 24: short nx, ny, fru, frv; ! 25: int nf; ! 26: double frtime; ! 27: int zero; ! 28: int g2nx, g2ny; ! 29: float g2s[6], g2d[4], g2c[300]; ! 30: float NaN; ! 31: int explcont = 0; ! 32: timewarp = 0; ! 33: progname=argv[0]; ! 34: ! 35: for(argc--, argv++; *argv && (**argv == '-' ); argv++){ ! 36: switch(argv[0][1]){ ! 37: case 'c': ! 38: if(argv[0][2]=='l'){ ! 39: ncontour = sscanf(&(argv[0][3]),"%f,%f,%f,%f,%f,%f,%f,%f", ! 40: g2c+0,g2c+1,g2c+2,g2c+3,g2c+4,g2c+5,g2c+6,g2c+7,g2c+8); ! 41: explcont = 1; ! 42: break; ! 43: } ! 44: ncontour = atoi(&argv[0][2]); ! 45: break; ! 46: case 't': ! 47: i = sscanf(&argv[0][2], "%hd, %hd", &ts, &te); ! 48: if(i==0) error("bad TS,TE"); ! 49: timewarp = i; ! 50: break; ! 51: case 'T': ! 52: break; ! 53: default: ! 54: err: ! 55: fprintf(stderr,"unrecognized option: %s\n",argv[0]); ! 56: exit(1); ! 57: } ! 58: } ! 59: ! 60: rd2dh(0,&nx,&ny); ! 61: v = (short *)Malloc(nx*ny*sizeof(short)); ! 62: pict = (float *)Malloc(nx*ny*sizeof(float)); ! 63: ! 64: g2open_(); ! 65: g2d[0] = 0; ! 66: g2d[1] = 0; ! 67: g2d[2] = nx-1; ! 68: g2d[3] = ny-1; ! 69: i = 4; ! 70: g2sce_(g2s,g2d,&i); ! 71: g2nx = nx; ! 72: g2ny = ny; ! 73: fprintf(stderr,"contours at:\n"); ! 74: for( i=1; i<=ncontour; i++){ ! 75: if(!explcont) ! 76: g2c[i-1] = rd.fmin + i*(rd.fmax-rd.fmin)/(ncontour+1); ! 77: fprintf(stderr," %g\n",g2c[i-1]); ! 78: } ! 79: ! 80: /* for a not-a-number flag, choose a value below all the data */ ! 81: NaN = rd.fmin; ! 82: if(NaN > -1) NaN = -1; ! 83: NaN *= 2; ! 84: ! 85: u2 = rd.u; ! 86: v2 = pow2(rd.v); ! 87: while(rd2di(&frtime,v)){ ! 88: p = pict; ! 89: q = v; ! 90: for(i=0; i<nx*ny; i++){ ! 91: r = *q; ! 92: if( r < -BIG ){ *p = NaN; } ! 93: else{ ! 94: *p = (r-u2)*v2; ! 95: } ! 96: p++; q++; ! 97: } ! 98: g2ff_(); ! 99: g2box_(g2s,g2d); ! 100: g2co_(g2s,g2d,&g2nx,&g2ny,pict,&ncontour,g2c,&NaN); ! 101: } ! 102: g2clos_(); ! 103: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.