27 int main(
int argc,
char **argv)
48 catch(
const exception &error) {
49 FATAL(error.what() << endl);
52 gRandom->SetSeed(seed);
55 const JCompass
c1(0.5*
PI, 0.0, 0.0);
59 for (
int i = 0; i != 4; ++i) {
61 JPosition3D
u = pointer[i];
65 u.rotate(c1.getRotation());
69 ASSERT(u.equals(pointer[i+1], precision),
"compass definitions");
73 for (
int count = 0; count < numberOfEvents; ++count) {
75 STATUS(
"event: " << setw(10) << count <<
'\r');
DEBUG(endl);
77 const JCompass
c1(gRandom->Uniform(-1.0*
PI,+1.0*
PI),
78 gRandom->Uniform(-0.5*
PI,+0.5*
PI),
79 gRandom->Uniform(-0.5*
PI,+0.5*
PI));
81 const JRotation3D
R1 =
c1.getRotation();
82 const JQuaternion3D Q1(R1);
83 const JQuaternion3D Q2 =
c1.getQuaternion();
84 const JCompass c2(Q1);
86 DEBUG(
"compass [1] " << setprecision(3) <<
c1 << endl);
87 DEBUG(
"compass [2] " << setprecision(3) << c2 << endl);
88 DEBUG(
"quaternion [1] " << setprecision(5) << Q1 << endl);
89 DEBUG(
"quaternion [2] " << setprecision(5) << Q2 << endl);
93 ASSERT(Q1.equals(+Q2, precision) ||
94 Q1.equals(-Q2, precision),
"compass to rotation to quaternion versus compass to quaternion");
96 ASSERT(
c1.equals(c2, precision),
"compass to quaternion to compass");
98 const JPosition3D pos[] = {
104 for (
int i = 0; i !=
sizeof(pos)/
sizeof(pos[0]); ++i) {
106 JPosition3D p0 = pos[i];
115 DEBUG(showpos <<
FIXED(8,3) << p0 <<
" -> " << flush);
116 DEBUG(showpos <<
FIXED(8,3) << p1 <<
" -> " << flush);
119 ASSERT(p0.equals(p2, precision));
Utility class to parse command line options.
static const JUTMPosition JNorth_t(0,+1, 0)
North.
int main(int argc, char *argv[])
Auxiliary data structure for floating point format specification.
static const JUTMPosition JSouth_t(0,-1, 0)
South.
static const JVector3D JVector3X_t(1, 0, 0)
unit x-vector
static const JUTMPosition JWest_t(-1, 0, 0)
West.
#define ASSERT(A,...)
Assert macro.
I/O formatting auxiliaries.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static const double PI
Mathematical constants.
General purpose messaging.
TCanvas * c1
Global variables to handle mouse events.
Utility class to parse command line options.
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
static const JVector3D JVector3Y_t(0, 1, 0)
unit y-vector
static const JUTMPosition JEast_t(+1, 0, 0)
East.
#define DEBUG(A)
Message macros.