| 15 |
|
|
| 16 |
|
#define DEGREE (PI/180.) |
| 17 |
|
|
| 18 |
< |
#define MAXNT 180 /* maximum number of theta divisions */ |
| 18 |
> |
#define MAXNT 181 /* maximum number of theta divisions */ |
| 19 |
|
#define MAXNP 360 /* maximum number of phi divisions */ |
| 20 |
|
|
| 21 |
|
extern char *progname; /* global argv[0] */ |
| 209 |
|
{ |
| 210 |
|
int warnedneg; |
| 211 |
|
char linebuf[8192]; |
| 212 |
+ |
int last_pos_val = 0; |
| 213 |
|
int nelem = 1000; |
| 214 |
|
float *sarr = (float *)malloc(sizeof(float)*nelem); |
| 215 |
|
FILE *fp; |
| 270 |
|
error(WARNING, errmsg); |
| 271 |
|
} |
| 272 |
|
sarr[i] = .0; |
| 273 |
< |
} |
| 273 |
> |
} else if (i > ntp[0]*(ntp[1]+1) && sarr[i] > FTINY) |
| 274 |
> |
last_pos_val = i; |
| 275 |
|
++i; |
| 276 |
|
} |
| 277 |
|
if (i == ntp[0]*(ntp[1]+1)) |
| 290 |
|
error(USER, errmsg); |
| 291 |
|
} |
| 292 |
|
} |
| 293 |
< |
nelem = i; |
| 293 |
> |
/* truncate zero region */ |
| 294 |
> |
ntp[0] = (last_pos_val + ntp[1])/(ntp[1]+1) - 1; |
| 295 |
> |
nelem = (ntp[0]+1)*(ntp[1]+1); |
| 296 |
|
fclose(fp); |
| 297 |
|
errmsg[0] = '\0'; /* sanity checks */ |
| 298 |
+ |
if (!last_pos_val) |
| 299 |
+ |
sprintf(errmsg, "no positive sensor values in file '%s'", sfile); |
| 300 |
|
if (ntp[0] <= 0) |
| 301 |
|
sprintf(errmsg, "no data in sensor file '%s'", sfile); |
| 302 |
|
else if (fabs(sarr[ntp[1]+1]) > FTINY) |
| 311 |
|
sfile); |
| 312 |
|
else if (sarr[ntp[0]*(ntp[1]+1)] <= FTINY) |
| 313 |
|
sprintf(errmsg, |
| 314 |
< |
"maximum theta must be positive in sensor file '%s'", |
| 315 |
< |
sfile); |
| 314 |
> |
"maximum theta (%f) must be positive in sensor file '%s'", |
| 315 |
> |
sarr[ntp[0]*(ntp[1]+1)], sfile); |
| 316 |
|
if (errmsg[0]) |
| 317 |
|
error(USER, errmsg); |
| 318 |
|
return((float *)realloc((void *)sarr, sizeof(float)*nelem)); |
| 430 |
|
} |
| 431 |
|
pvals[i*(nphi+1) + nphi] = phdiv[sntp[1]]; |
| 432 |
|
} |
| 433 |
+ |
/* duplicate final row */ |
| 434 |
+ |
memcpy(pvals+ntheta*(nphi+1), pvals+(ntheta-1)*(nphi+1), |
| 435 |
+ |
sizeof(*pvals)*(nphi+1)); |
| 436 |
|
tvals[0] = .0f; |
| 437 |
|
tvals[ntheta] = (float)tsize; |
| 438 |
|
} |