##// END OF EJS Templates
Fixing plots
Fixing plots

File last commit:

r0:b84e1135c2c4
r7:4e0b343b0c61
Show More
testGeometry.c
181 lines | 5.6 KiB | text/x-c | CLexer
/* $Id: testGeometry.c 3304 2011-01-17 15:25:59Z brideout $ */
#include <stdio.h>
#include <geometry.h>
int
main(argc, argv)
int argc;
char *argv[];
{
int kinst, i;
double sprod();
double a[3], b[3], c[3];
double adota, adotb, bdota, bdotb;
double fx, fy, fz, x, y, z, fr, ft, fp, r, theta, phi;
double sr, slat, slon, az, el, range, pr, glat, glon,
gdlat, gdalt, gclat, rkm, sgdlat, sgdalt;
double rfx, rfy, rfz, pfx, pfy, pfz;
double rfr, rft, rfp, rr, rt, rp, cst, csp, csr, cx, cy, cz;
double sunrise = 0.0;
double sunset = 0.0;
printf("Test C geometry package\n");
a[0] = 1.0;
a[1] = 2.0;
a[2] = 3.0;
b[0] = 2.0;
b[1] = 3.0;
b[2] = 4.0;
printf("test vprod\n");
adota = sprod(a, a);
printf("adota = %f\n", adota);
adotb = sprod(a, b);
printf("adotb = %f\n", adotb);
bdota = sprod(b, a);
printf("bdota = %f\n", bdota);
bdotb = sprod(b, b);
printf("bdotb = %f\n", bdotb);
printf("\n");
printf("test vadd\n");
vadd(a,a,c);
printf("aplusa = %f %f %f\n", c[0],c[1],c[2]);
vadd(a,b,c);
printf("aplusb = %f %f %f\n", c[0],c[1],c[2]);
vadd(b,a,c);
printf("bplusa = %f %f %f\n", c[0],c[1],c[2]);
vadd(b,b,c);
printf("bplusb = %f %f %f\n", c[0],c[1],c[2]);
printf("\n");
printf("test vsub\n");
vsub(a,a,c);
printf("aminusa = %f %f %f\n", c[0],c[1],c[2]);
vsub(a,b,c);
printf("aminusb = %f %f %f\n", c[0],c[1],c[2]);
vsub(b,a,c);
printf("bminusa = %f %f %f\n", c[0],c[1],c[2]);
vsub(b,b,c);
printf("bminusb = %f %f %f\n", c[0],c[1],c[2]);
printf("\n");
printf("Test csconv\n");
r = 6370.0;
theta = 48.0;
phi = 290.0;
csconv(&x, &y, &z, &r, &theta, &phi, 2);
printf("x, y, z = %f %f %f\n", x, y, z);
csconv(&x, &y, &z, &r, &theta, &phi, 1);
printf("r, theta, phi = %f %f %f\n", r, theta, phi);
printf("\n");
printf("Test vctcnv\n");
fr = 200.0;
ft = 1000.0;
fp = 500.0;
vctcnv(&fx, &fy, &fz, &x, &y, &z,
&fr, &ft, &fp, &r, &theta, &phi, 2);
printf("fx, fy, fz = %f %f %f\n", fx, fy, fz);
printf("x, y, z = %f %f %f \n", x, y, z);
vctcnv(&fx, &fy, &fz, &x, &y, &z,
&fr, &ft, &fp, &r, &theta, &phi, 1);
printf("fr, ft, fp = %f %f %f \n", fr, ft, fp);
printf("r, theta, phi = %f %f %f\n", r, theta, phi);
printf("\n");
printf( "Test point and look\n");
/* Chatanika */
sr = 6361.29555;
slat = 62.56771;
slon = 221.04933;
az = 0.0;
el = 90.0;
range = 0.0;
az = 45.0;
el = 45.0;
range = 1000.0;
printf("sr, slat, slon = %f %f %f\n", sr, slat, slon);
printf("az, el, range = %f %f %f\n", az, el, range);
point(&sr, &slat, &slon, &az, &el, &range, &pr, &glat, &glon);
printf( "pr, glat, glon = %f %f %f\n", pr, glat, glon);
look (&sr, &slat, &slon, &pr, &glat, &glon, &az, &el, &range);
printf("az, el, range = %f %f %f\n", az, el, range);
printf("\n");
printf("Test convrt\n");
gclat = glat;
rkm = pr;
printf("gclat rkm = %f %f\n", gclat, rkm);
convrt(2, &gdlat, &gdalt, &gclat, &rkm);
printf("gdlat gdalt = %f %f\n", gdlat, gdalt);
convrt(1, &gdlat, &gdalt, &gclat, &rkm);
printf("gclat rkm = %f %f\n", gclat, rkm);
printf("\n");
printf("Test rpcart\n");
sgdlat = 42.620;
slon = 288.508;
sgdalt = 0.146;
convrt(1, &sgdlat, &sgdalt, &slat, &sr);
printf("slat sr = %f %f\n", slat, sr);
az = 90.0;
el = 10.0;
range = 1000.0;
/* Convert radar propagation vector and observation point position
to earth centered Cartesian coordinates */
rpcart(&sr, &slat, &slon, &az, &el, &range,
&rfx, &rfy, &rfz, &pfx, &pfy, &pfz);
printf("rfx rfy rfz = %f %f %f\n", rfx, rfy, rfz);
printf("pfx pfy pfz = %f %f %f\n", pfx, pfy, pfz);
printf("\n");
printf("Test gdv\n");
/* Calculate direction cosines of radar beam with respect to
geocentric south, east, up */
vctcnv(&rfx, &rfy, &rfz, &pfx, &pfy, &pfz,
&rfr, &rft, &rfp, &rr, &rt, &rp, 1);
cst = rft/range;
csp = rfp/range;
csr = rfr/range;
printf("cst,csp,csr = %f %f %f\n", cst, csp, csr);
/* Compute geodetic direction cosines. The direction cosines
are with respect to x (north), y (east), z (down) */
gdv(&gdlat, &gclat, &csr, &cst, &csp, &cx, &cy, &cz);
printf("cx cy cz = %f %f %f\n", cx, cy, cz);
printf("cx*cx+cy*cy+cz*cz = %f\n", cx*cx+cy*cy+cz*cz);
printf("\n");
/* Test los2geodetic */
printf("Test los2geodetic\n");
kinst = 31;
az = 45.0;
el = 10.0;
range = 1000.0;
los2geodetic(kinst, az, el, range, &gdlat, &glon, &gdalt);
printf("gdlat, glon, gdalt = %f %f %f\n\n", gdlat, glon, gdalt);
/* test solar distance */
printf("Solar distance at 7/27/1980 is %g\n\n",
solardist(964656000.0));
/* test shadowheight, sunrise_set through 24 h at 42.0, -70.0 */
printf("Test shadowheight, sunrise_set through 24 h at 42.0, -70.0\n\n");
for (i=0; i<25; i++)
{
printf("Shadow height at %i = %f\n", i,
shadowheight(1516492800.0 + i*3600.0, 42.0, -70.0));
sunrise_set(1516492800.0 + i*3600.0, 42.0, -70.0, 20.0, &sunrise, &sunset);
printf("At 20 km, sunrise = %f and sunset = %f\n", (sunrise-1516492800.0)/3600.0, (sunset-1516492800.0)/3600.0);
sunrise_set(1516492800.0 + i*3600.0, 42.0, -70.0, 2000.0, &sunrise, &sunset);
printf("At 2000 km, sunrise = %f and sunset = %f\n\n", (sunrise-1516492800.0)/3600.0, (sunset-1516492800.0)/3600.0);
}
return(0);
}