12static void utest_latcxlatc(
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;
23 unsigned const q_between_cd = 1 << 3;
24 unsigned const circles_are_identically = 1 << 4;
25 double lon_middle_ab, lat_middle_ab, lon_middle_cd, lat_middle_cd;
29 for (
int i = 0;
i < 2; ++
i) {
31 double lon_coords[2][2] = {{-10, 5}, {-5, 10}};
32 utest_latcxlatc(lon_coords[i][0], 30,
34 lon_coords[i^1][0], 30,
35 lon_coords[i^1][1], 30,
38 p_between_ab + p_between_cd + q_between_ab + q_between_cd +
39 circles_are_identically);
42 for (
int i = 0;
i < 2; ++
i) {
44 double lon_coords[2][2] = {{20, 25}, {30, 10}};
45 utest_latcxlatc(lon_coords[i][0], -15,
46 lon_coords[i][1], -15,
47 lon_coords[i^1][0], -15,
48 lon_coords[i^1][1], -15,
51 p_between_ab + p_between_cd + q_between_ab + q_between_cd +
52 circles_are_identically);
57 for (
int i = 0;
i < 2; ++
i) {
59 double lon_coords[2][2] = {{-80, -70}, {20, 30}};
62 &lon_middle_ab, &lat_middle_ab);
65 &lon_middle_cd, &lat_middle_cd);
66 utest_latcxlatc(lon_coords[i][0], 10,
68 lon_coords[i^1][0], 10,
69 lon_coords[i^1][1], 10,
72 p_between_ab + q_between_cd +
73 circles_are_identically);
78 for (
int i = 0;
i < 2; ++
i) {
80 double lat_coords[2] = {0, 5};
81 utest_latcxlatc(20, lat_coords[i],
89 utest_latcxlatc(-80, lat_coords[i],
100 for (
int i = 0;
i < 2; ++
i) {
102 double lat_coords[2] = {90, -90};
103 utest_latcxlatc( 0, lat_coords[i],
109 p_between_ab + p_between_cd);
112 for (
int i = 0;
i < 2; ++
i) {
114 double lat_coords[2] = {90, -90};
115 utest_latcxlatc( 0, lat_coords[i],
121 p_between_ab + p_between_cd);
126 for (
int i = 0;
i < 2; ++
i) {
128 double lat_coords[2] = {-10, 10};
129 utest_latcxlatc(45 , lat_coords[i],
131 90 , lat_coords[i^1],
132 90 , lat_coords[i^1],
141 utest_latcxlatc(45, 10,
147 p_between_ab + q_between_cd +
148 circles_are_identically);
153 utest_latcxlatc( 90, 10,
159 p_between_ab + p_between_cd);
164 utest_latcxlatc( 0, 10,
170 p_between_ab + p_between_cd);
175 utest_latcxlatc(180, 10,
181 p_between_ab + q_between_cd);
183 utest_latcxlatc( 90, 10,
194static void utest_latcxlatc(
double lon_a,
double lat_a,
double lon_b,
double lat_b,
195 double lon_c,
double lat_c,
double lon_d,
double lat_d,
196 double lon_ref_p,
double lat_ref_p,
197 double lon_ref_q,
double lat_ref_q,
int ref_ret_val) {
199 test_cxc(lon_a, lat_a, lon_b, lat_b, lon_c, lat_c, lon_d, lat_d,
201 lon_ref_p, lat_ref_p, lon_ref_q, lat_ref_q, ref_ret_val);
@ YAC_LAT_CIRCLE_EDGE
latitude circle
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)
void get_edge_middle_point(enum yac_edge_type edge_type, double lon_a, double lat_a, double lon_b, double lat_b, double *lon_middle, double *lat_middle)