Mapper
libraries
common
plot_maxmin.c
Go to the documentation of this file.
1
2
#include "
prototypes_new.h
"
3
4
5
void
plot_maxmin
(
int
isom,Pixmap pixm,
int
h,
int
display_flag
,
int
type)
6
7
{
8
extern
int
tscale;
9
extern
float
delim
[][16];
10
extern
Display *
display
;
11
extern
int
npoint
[2],
zoom
;
12
extern
GC
gc
;
13
extern
struct
maxmin
*
maxmin
;
14
extern
unsigned
long
mnmap[16];
15
extern
unsigned
long
nmap
[16];
16
extern
Widget
drawing_area
;
17
extern
struct
display_set
display_set
[4];
18
int
i
,
j
,
k
,m;
19
int
color
,
MY
=10;
20
float
xrat
,
yrat
,
mult
,
dmult
,
cmult
;
21
long
nx
[4],
ny
[4];
22
Dimension
width
,
height
;
23
Arg
args
[10];
24
unsigned
long
XSIZE
,
YSIZE
;
25
XPoint
point
[5];
26
long
xmin
,
xmax
,
ymin
,
ymax
,
lint1
,
lint2
;
27
signed
long
xcen
,
ycen
;
28
int
iflag,maxi,maxj,mini,minj,nlong,
di
[4][4],
dj
[4][4];
29
int
ceni,cenj;
30
float
ddi;
31
float
xk,yk;
32
int
kk;
33
float
deltax,deltay;
34
float
vx,vy;
35
36
di
[0][0]=-1;
37
di
[0][1]= 0;
38
di
[0][2]= 0;
39
di
[0][3]=-1;
40
41
dj
[0][0]=-1;
42
dj
[0][1]=-1;
43
dj
[0][2]= 0;
44
dj
[0][3]= 0;
45
46
di
[1][0]= 0;
47
di
[1][1]= 1;
48
di
[1][2]= 1;
49
di
[1][3]= 0;
50
51
dj
[1][0]=-1;
52
dj
[1][1]=-1;
53
dj
[1][2]= 0;
54
dj
[1][3]= 0;
55
56
di
[2][0]= 0;
57
di
[2][1]= 1;
58
di
[2][2]= 1;
59
di
[2][3]= 0;
60
61
dj
[2][0]= 0;
62
dj
[2][1]= 0;
63
dj
[2][2]= 1;
64
dj
[2][3]= 1;
65
66
di
[3][0]=-1;
67
di
[3][1]= 0;
68
di
[3][2]= 0;
69
di
[3][3]=-1;
70
71
dj
[3][0]= 0;
72
dj
[3][1]= 0;
73
dj
[3][2]= 1;
74
dj
[3][3]= 1;
75
76
dmult
=
display_set
[
display_flag
].
dmult
[h];
77
xmin
=
display_set
[
display_flag
].
xmin
[h];
78
xmax
=
display_set
[
display_flag
].
xmax
[h];
79
ymin
=
display_set
[
display_flag
].
ymin
[h];
80
ymax
=
display_set
[
display_flag
].
ymax
[h];
81
xcen
=
display_set
[
display_flag
].
xcen
[h];
82
ycen
=
display_set
[
display_flag
].
ycen
[h];
83
84
XtSetArg(
args
[0],XtNwidth,&
width
);
85
XtSetArg(
args
[1],XtNheight,&
height
);
86
XtGetValues(
drawing_area
,
args
,2);
87
88
XSIZE
=(long)
width
*10L;
89
YSIZE
=(long)
height
*10L;
90
91
xrat
=(float)
XSIZE
/(
float
)12800;
92
yrat
=(float)
YSIZE
/(
float
)9600;
93
94
if
(
xrat
<
yrat
)
95
mult
=
xrat
;
96
97
else
98
mult
=
yrat
;
99
100
cmult
=
dmult
*
mult
;
101
lint1
=(long)
npoint
[0]*(
long
)
MY
;
102
lint2
=(long)
npoint
[1]*(
long
)
MY
;
103
104
XSetFillRule(
display
,
gc
,WindingRule);
105
106
mini=minj=0;
107
maxi=
maxmin
->
maxi
;
108
maxj=
maxmin
->
maxj
;
109
ceni=maxi/2;
110
cenj=maxj/2;
111
112
if
(
zoom
> 1) {
113
114
iflag=0;
115
116
for
(
i
=0;
i
<maxi;
i
++) {
117
118
nlong=(
xmin
+((float)
maxmin
->
coord
[
i
][cenj].
x
*
cmult
-
lint1
))*
zoom
+
xcen
;
119
120
121
if
(iflag==0 && nlong <
xmin
)
122
continue
;
123
124
if
(iflag==1 && nlong <
xmax
)
125
continue
;
126
127
if
(iflag==0)
128
mini=
i
;
129
130
if
(iflag==1)
131
maxi=
i
;
132
133
iflag++;
134
135
136
}
137
138
iflag=0;
139
140
for
(
j
=0;
j
<maxj;
j
++) {
141
142
nlong=(
ymin
+((float)
maxmin
->
coord
[ceni][
j
].
y
*
cmult
-
lint2
))*
zoom
+
ycen
;
143
144
145
if
(iflag==0 && nlong < 0)
146
continue
;
147
148
if
(iflag==1 && nlong <
YSIZE
)
149
continue
;
150
151
if
(iflag==0)
152
minj=
j
;
153
154
155
if
(iflag==1)
156
maxj=
j
;
157
158
iflag++;
159
160
}
161
162
}
163
164
printf
(
"maxj %d maxi %d\n"
,maxj,maxi);
165
166
167
for
(
i
=mini;
i
<maxi;
i
++) {
168
169
for
(
j
=minj;
j
<maxj;
j
++) {
170
171
if
(type==0) {
172
173
if
(
maxmin
->
maxvalue
[isom][
i
][
j
] < 0)
174
continue
;
175
176
ddi=(float)(
maxmin
->
maxvalue
[isom][
i
][
j
])/(10);
177
178
}
179
180
else
if
(type==1) {
181
182
if
(
maxmin
->
minvalue
[isom][
i
][
j
] < 0)
183
continue
;
184
185
ddi=(float)(
maxmin
->
minvalue
[isom][
i
][
j
])/(10);
186
187
188
189
190
}
191
192
if
(ddi <= -300)
193
continue
;
194
195
if
(ddi <
delim
[tscale][0])
196
color
=mnmap[0];
197
198
else
if
(ddi >=
delim
[tscale][14])
199
color
=mnmap[15];
200
201
else
{
202
203
for
(h=0;h < 14;h++) {
204
205
if
(ddi >=
delim
[tscale][h] &&
206
ddi <
delim
[tscale][h+1]) {
207
208
color
=mnmap[h];
209
break
;
210
211
}
212
213
}
214
215
}
216
217
if
(
color
==0)
218
continue
;
219
220
XSetForeground(
display
,
gc
,
color
);
221
222
if
(
j
==0) {
223
224
if
(
i
==0 ||
i
==maxi-1)
225
continue
;
226
227
for
(
k
=2;
k
<4;
k
++) {
228
229
xk=0;
230
yk=0;
231
232
for
(kk=0;kk<4;kk++) {
233
234
if
(
zoom
<= 1) {
235
236
xk=xk+
xmin
+(float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
;
237
yk=yk+
ymin
+(
float
)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
;
238
vy=
ymin
+(float)
maxmin
->
coord
[
i
][
j
].
y
*
cmult
;
239
}
240
241
else
{
242
243
xk=xk+(
xmin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
-
244
lint1
))*
zoom
+
xcen
;
245
yk=yk+(
ymin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
-
246
lint2
))*
zoom
+
ycen
;
247
vy=(
ymin
+((float)
maxmin
->
coord
[
i
][
j
].
y
*
cmult
-
lint2
))*
zoom
+
ycen
;
248
}
249
250
}
251
252
nx
[
k
]=xk/4;
253
ny
[
k
]=yk/4;
254
255
}
256
257
deltay=
ny
[3] - vy;
258
259
nx
[1]=
nx
[2];
260
nx
[0]=
nx
[3];
261
ny
[1]=vy - deltay;
262
ny
[0]=vy - deltay;
263
264
265
}
266
267
else
if
(
i
==0) {
268
269
if
(
j
==0 ||
j
==maxj-1)
270
continue
;
271
272
273
for
(
k
=1;
k
<3;
k
++) {
274
275
xk=0;
276
yk=0;
277
278
for
(kk=0;kk<4;kk++) {
279
280
if
(
zoom
<= 1) {
281
282
xk=xk+
xmin
+(float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
;
283
yk=yk+
ymin
+(
float
)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
;
284
vx=
xmin
+(float)
maxmin
->
coord
[
i
][
j
].
x
*
cmult
;
285
}
286
287
else
{
288
289
xk=xk+(
xmin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
-
290
lint1
))*
zoom
+
xcen
;
291
yk=yk+(
ymin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
-
292
lint2
))*
zoom
+
ycen
;
293
vx=(
xmin
+((float)
maxmin
->
coord
[
i
][
j
].
x
*
cmult
-
lint1
))*
zoom
+
xcen
;
294
295
}
296
297
}
298
299
nx
[
k
]=xk/4;
300
ny
[
k
]=yk/4;
301
302
303
}
304
305
deltax=
nx
[1] - vx;
306
307
ny
[0]=
ny
[1];
308
ny
[3]=
ny
[2];
309
nx
[0]=vx - deltax;
310
nx
[3]=vx - deltax;
311
312
313
}
314
315
else
if
(
j
==maxj-1) {
316
317
if
(
i
==0 ||
i
==maxi-1)
318
continue
;
319
320
for
(
k
=0;
k
<2;
k
++) {
321
322
xk=0;
323
yk=0;
324
325
for
(kk=0;kk<4;kk++) {
326
327
if
(
zoom
<= 1) {
328
329
xk=xk+
xmin
+(float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
;
330
yk=yk+
ymin
+(
float
)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
;
331
vy=
ymin
+(float)
maxmin
->
coord
[
i
][
j
].
y
*
cmult
;
332
}
333
334
else
{
335
336
xk=xk+(
xmin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
-
337
lint1
))*
zoom
+
xcen
;
338
yk=yk+(
ymin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
-
339
lint2
))*
zoom
+
ycen
;
340
vy=(
ymin
+((float)
maxmin
->
coord
[
i
][
j
].
y
*
cmult
-
341
lint2
))*
zoom
+
ycen
;
342
343
}
344
345
}
346
347
nx
[
k
]=xk/4;
348
ny
[
k
]=yk/4;
349
350
}
351
352
deltay=vy -
ny
[0];
353
354
nx
[2]=
nx
[0];
355
nx
[3]=
nx
[1];
356
ny
[2]=vy + deltay;
357
ny
[3]=vy + deltay;
358
359
}
360
361
else
if
(
i
==maxi-1) {
362
363
if
(
j
==0 ||
j
==maxj-1)
364
continue
;
365
366
for
(
k
=0;
k
<4;
k
++) {
367
368
if
(
k
==1 ||
k
==2)
369
continue
;
370
371
xk=0;
372
yk=0;
373
374
for
(kk=0;kk<4;kk++) {
375
376
if
(
zoom
<= 1) {
377
378
xk=xk+
xmin
+(float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
;
379
yk=yk+
ymin
+(
float
)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
;
380
vx=
xmin
+(float)
maxmin
->
coord
[
i
][
j
].
x
*
cmult
;
381
382
}
383
384
else
{
385
386
xk=xk+(
xmin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
-
387
lint1
))*
zoom
+
xcen
;
388
yk=yk+(
ymin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
-
389
lint2
))*
zoom
+
ycen
;
390
vx=(
xmin
+((float)
maxmin
->
coord
[
i
][
j
].
x
*
cmult
-
lint1
))*
zoom
+
xcen
;
391
}
392
393
}
394
395
nx
[
k
]=xk/4;
396
ny
[
k
]=yk/4;
397
398
}
399
400
deltax= vx -
nx
[0];
401
402
ny
[1]=
ny
[0];
403
ny
[2]=
ny
[3];
404
405
nx
[1]=vx + deltax;
406
nx
[2]=vx + deltax;
407
408
409
}
410
411
412
else
{
413
414
for
(
k
=0;
k
<4;
k
++) {
415
416
xk=0;
417
yk=0;
418
419
for
(kk=0;kk<4;kk++) {
420
421
if
(
zoom
<= 1) {
422
423
xk=xk+
xmin
+(float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
;
424
yk=yk+
ymin
+(
float
)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
;
425
426
}
427
428
429
430
else
{
431
432
xk=xk+(
xmin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
x
*
cmult
-
433
lint1
))*
zoom
+
xcen
;
434
yk=yk+(
ymin
+((float)
maxmin
->
coord
[
i
+
di
[
k
][kk]][
j
+
dj
[
k
][kk]].
y
*
cmult
-
435
lint2
))*
zoom
+
ycen
;
436
437
}
438
439
}
440
441
nx
[
k
]=xk/4;
442
ny
[
k
]=yk/4;
443
444
}
445
446
}
447
448
for
(
k
=0;
k
<4;
k
++) {
449
450
point
[
k
].
x
=(
nx
[
k
]+5)/
MY
;
451
point
[
k
].
y
=(
ny
[
k
]+5)/
MY
;
452
453
}
454
455
point
[4].
x
=
point
[0].
x
;
456
point
[4].
y
=
point
[0].
y
;
457
458
XFillPolygon(
display
,pixm,
gc
,
point
,5,Convex,CoordModeOrigin);
459
460
}
461
462
}
463
464
return
;
465
466
}
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
i
static int i
Definition:
get_apps_defaults.c:110
display
Display * display
Definition:
mapper.c:159
mult
float mult
Definition:
edit_stations.c:6
printf
printf("fbuf is %s\n", fbuf)
j
int j
Definition:
mapp2h.h:48
k
int k
Definition:
mapp2h.h:48
nmap
unsigned long nmap[20]
Definition:
mapper.c:116
display_flag
int display_flag
Definition:
mapper.c:100
plot_maxmin
void plot_maxmin(int isom, Pixmap pixm, int h, int display_flag, int type)
Definition:
plot_maxmin.c:5
xrat
float xrat
Definition:
plot_qpf_legend.c:20
xmax
long xmax
Definition:
plot_qpf_legend.c:26
dj
int dj[4]
Definition:
plot_qpf_legend.c:28
color
int color
Definition:
plot_qpf_legend.c:19
yrat
float yrat
Definition:
plot_qpf_legend.c:20
ny
long ny[4]
Definition:
plot_qpf_legend.c:21
ymax
long ymax
Definition:
plot_qpf_legend.c:26
lint1
long lint1
Definition:
plot_qpf_legend.c:26
gc
GC gc
Definition:
mapper.c:163
cmult
float cmult
Definition:
plot_qpf_legend.c:20
xcen
signed long xcen
Definition:
plot_qpf_legend.c:27
height
Dimension height
Definition:
plot_qpf_legend.c:22
ycen
signed long ycen
Definition:
plot_qpf_legend.c:27
width
Dimension width
Definition:
plot_qpf_legend.c:22
lint2
long lint2
Definition:
plot_qpf_legend.c:26
args
Arg args[10]
Definition:
plot_qpf_legend.c:23
xmin
long xmin
Definition:
plot_qpf_legend.c:26
XSIZE
unsigned long XSIZE
Definition:
plot_qpf_legend.c:24
MY
int MY
Definition:
plot_qpf_legend.c:19
zoom
int zoom
Definition:
plot_qpf_legend.c:9
delim
float delim[][16]
Definition:
mapper.c:30
nx
long nx[4]
Definition:
plot_qpf_legend.c:21
dmult
float dmult
Definition:
plot_qpf_legend.c:20
drawing_area
Widget drawing_area
Definition:
mapper.c:185
npoint
int npoint[2]
Definition:
mapper.c:105
ymin
long ymin
Definition:
plot_qpf_legend.c:26
YSIZE
unsigned long YSIZE
Definition:
plot_qpf_legend.c:24
di
int di[4]
Definition:
plot_qpf_legend.c:28
prototypes_new.h
display_set
Definition:
misc.h:603
display_set::dmult
float dmult[4]
Definition:
misc.h:613
display_set::xmin
long xmin[4]
Definition:
misc.h:607
display_set::xmax
long xmax[4]
Definition:
misc.h:609
display_set::ymax
long ymax[4]
Definition:
misc.h:610
display_set::ymin
long ymin[4]
Definition:
misc.h:608
display_set::ycen
long ycen[4]
Definition:
misc.h:612
display_set::xcen
long xcen[4]
Definition:
misc.h:611
icoord::y
short int y
Definition:
misc_new.h:681
icoord::x
short int x
Definition:
misc_new.h:680
maxmin
Definition:
misc_new.h:762
maxmin::maxj
int maxj
Definition:
misc_new.h:768
maxmin::maxvalue
short int *** maxvalue
Definition:
misc_new.h:765
maxmin::coord
struct icoord ** coord
Definition:
misc_new.h:764
maxmin::minvalue
short int *** minvalue
Definition:
misc_new.h:766
maxmin::maxi
int maxi
Definition:
misc_new.h:767
point
Definition:
mapp2h.h:29
point::y
int y
Definition:
mapp2h.h:30
point::x
int x
Definition:
mapp2h.h:30
Generated by
1.9.1