|
|
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.