12static void utest_loncxlatc(
13 double lon_a,
double lat_a,
double lon_b,
double lat_b,
14 double lon_c,
double lat_c,
double lon_d,
double lat_d,
15 double lon_ref_p,
double lat_ref_p,
16 double lon_ref_q,
double lat_ref_q,
int ref_ret_val);
20 unsigned const p_between_ab = 1 << 0;
21 unsigned const q_between_ab = 1 << 1;
22 unsigned const p_between_cd = 1 << 2;
26 utest_loncxlatc( 0, 10,
32 p_between_ab + p_between_cd);
36 utest_loncxlatc(65, 35,
42 p_between_ab + p_between_cd);
46 utest_loncxlatc(-30, -60,
56 utest_loncxlatc(-30, -60,
62 p_between_ab + p_between_cd);
66 utest_loncxlatc(-45, 80,
76 utest_loncxlatc(-45, 70,
82 p_between_ab + p_between_cd);
87 utest_loncxlatc(-45, 80,
93 p_between_ab + p_between_cd);
98 utest_loncxlatc(-45, -80,
104 p_between_ab + p_between_cd);
109 utest_loncxlatc(-45, 80,
120 utest_loncxlatc(-45, -80,
131 utest_loncxlatc(-45, -80,
137 p_between_ab + p_between_cd);
143 utest_loncxlatc( 0, -80,
149 p_between_ab + q_between_ab);
151 utest_loncxlatc( 0, -80,
157 p_between_ab + p_between_cd + q_between_ab);
162 utest_loncxlatc( 0, 0,
170 utest_loncxlatc( 0, 0,
181 utest_loncxlatc( 0, 0,
187 p_between_ab + p_between_cd);
192 utest_loncxlatc( 0, -5,
200 utest_loncxlatc( 0, -5,
211 utest_loncxlatc( 0, -5,
217 p_between_ab + p_between_cd);
219 utest_loncxlatc( 0, 90,
229 for (
int i = 0;
i < 4; ++
i) {
231 double lat_coords[2] = {90, -90};
232 int ret_val[2] = {-1, p_between_ab + p_between_cd};
233 utest_loncxlatc( 20, lat_coords[i&1],
234 200, lat_coords[i&1],
235 10, lat_coords[i>>1],
236 20, lat_coords[i>>1],
238 0, -lat_coords[i>>1],
239 ret_val[(i&1)==(i>>1)]);
244 double a[3] = {-0.01728256081754178,
245 -0.0024289055230921597,
246 0.99984769515639127};
247 double b[3] = {-0.034559857199638548,
248 -0.0048570711780326408,
249 0.99939082701909576};
250 double c[3] = {-0.017298289573378096,
251 -0.0023142316840916847,
252 0.99984769515639127};
253 double d[3] = { 0.01732231884620395,
254 0.0021269133133512588,
255 0.99984769515639127};
257 double a_lon, a_lat, b_lon, b_lat, c_lon, c_lat, d_lon, d_lat;
270 p_between_ab + p_between_cd);
276static void utest_loncxlatc(
double lon_a,
double lat_a,
double lon_b,
double lat_b,
277 double lon_c,
double lat_c,
double lon_d,
double lat_d,
278 double lon_ref_p,
double lat_ref_p,
279 double lon_ref_q,
double lat_ref_q,
int ref_ret_val) {
281 test_cxc(lon_a, lat_a, lon_b, lat_b, lon_c, lat_c, lon_d, lat_d,
283 lon_ref_p, lat_ref_p, lon_ref_q, lat_ref_q, ref_ret_val);
@ YAC_LAT_CIRCLE_EDGE
latitude circle
@ YAC_LON_CIRCLE_EDGE
longitude circle
static void XYZtoLL(double const p_in[], double *lon, double *lat)
void test_cxc(double lon_a, double lat_a, double lon_b, double lat_b, double lon_c, double lat_c, double lon_d, double lat_d, enum yac_edge_type edge_type_a, enum yac_edge_type edge_type_b, double lon_ref_p, double lat_ref_p, double lon_ref_q, double lat_ref_q, int ref_ret_val)