19int main(
int argc,
char **argv)
26 string transmitterFile_a;
27 string transmitterFile_b;
33 JParser<> zap(
"Auxiliary program to compare two transmitter files.");
35 zap[
'a'] =
make_field(transmitterFile_a,
"transmitter file A");
36 zap[
'b'] =
make_field(transmitterFile_b,
"transmitter file B (reference)");
37 zap[
'p'] =
make_field(precision,
"precision on radius comparison [m]") = 0.01;
42 catch(
const exception &error) {
43 FATAL(error.what() << endl);
46 container_type data_a;
47 container_type data_b;
49 data_a.
load(transmitterFile_a.c_str());
50 data_b.load(transmitterFile_b.c_str());
52 cout <<
"Comparing " << transmitterFile_a <<
" (A) to " << transmitterFile_b <<
" (B)." << endl;
55 cout << setw(4) <<
"id"
57 << setw(12) <<
"R_A [m]"
58 << setw(12) <<
"R_B [m]"
59 << setw(14) <<
"phi [rad]"
62 for (container_type::const_iterator ia = data_a.begin(); ia != data_a.end(); ++ia) {
64 for (container_type::const_iterator ib = data_b.begin(); ib != data_b.end(); ++ib) {
66 if (ia->getID() == ib->getID() &&
67 ia->getString() == ib->getString()) {
69 const double xa = ia->getX();
70 const double ya = ia->getY();
71 const double xb = ib->getX();
72 const double yb = ib->getY();
74 const double ra = sqrt(xa*xa + ya*ya);
75 const double rb = sqrt(xb*xb + yb*yb);
77 const double phi = atan2(ya, xa) - atan2(yb, xb);
80 cout << setw(4) << ia->getID()
81 << setw(4) << ia->getString()
82 << setw(12) << fixed << setprecision(4) << ra
83 << setw(12) << fixed << setprecision(4) << rb;
85 if (fabs(ra - rb) <= precision) {
87 cout << setw(14) << fixed << setprecision(2) << phi
92 cout << setw(14) <<
"-"
93 <<
" WARNING: not a pure rotation (|dR| = " << fabs(ra - rb) <<
" m)" << endl;