From 811dbe5dd569e1107595b20ddfee59585531e92d Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 24 May 2001 15:28:40 +0000 Subject: [PATCH] better debugging output, clearer comments --- panda/src/mathutil/fftCompressor.cxx | 59 +++++++++++++++++----------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/panda/src/mathutil/fftCompressor.cxx b/panda/src/mathutil/fftCompressor.cxx index 4259fcc4b1..c0c783069a 100644 --- a/panda/src/mathutil/fftCompressor.cxx +++ b/panda/src/mathutil/fftCompressor.cxx @@ -283,7 +283,7 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { #ifndef NDEBUG if (_quality >= 104) { // If quality level is at least 104, we don't even convert hpr at - // all. + // all. This is just for debugging. vector_float h, p, r; h.reserve(length); @@ -303,6 +303,7 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { } if (_quality >= 103) { // If quality level is 103, we convert hpr to a table of matrices. + // This is just for debugging. vector_float m00, m01, m02, m10, m11, m12, @@ -354,7 +355,7 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { compose_matrix(mat, LVecBase3f(1.0, 1.0, 1.0), array[i]); LOrientationf rot(mat); - rot.normalize(); + rot.normalize(); // This may not be necessary, but let's not take chances. if (rot.get_r() < 0) { // Since rot == -rot, we can flip the quarternion if need be to @@ -370,26 +371,40 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { rot.set(-rot.get_r(), -rot.get_i(), -rot.get_j(), -rot.get_k()); } - // This is a debug severity, and not a warning or error, because - // (a) some small errors in hpr are usually acceptable, and (b) - // sometimes two different hpr trios actually represent the same - // rotation, e.g. (180, 0, -180) vs. (0, 0, 0). - if (mathutil_cat.is_debug()) { +#ifdef NOTIFY_DEBUG + if (mathutil_cat.is_warning()) { LMatrix3f mat2; rot.extract_to_matrix(mat2); - LVecBase3f scale, hpr; - bool success = decompose_matrix(mat2, scale, hpr); - nassertv(success); - if (!array[i].almost_equal(hpr, 0.001) || - !scale.almost_equal(LVecBase3f(1.0, 1.0, 1.0), 0.001)) { - mathutil_cat.debug() - << "Converted hpr to quaternion incorrectly!\n" - << " Source hpr: " << array[i] << "\n" - << " Quaternion: " << rot << "\n" - << " Which represents: hpr " << hpr << " scale " - << scale << "\n"; - } + if (!mat.almost_equal(mat2, 0.0001)) { + LVecBase3f hpr1, hpr2; + LVecBase3f scale; + bool d1 = decompose_matrix(mat, scale, hpr1); + bool d2 = decompose_matrix(mat2, scale, hpr2); + mathutil_cat.warning() + << "Converted hpr to quaternion incorrectly!\n" + << " Source hpr: " << array[i]; + if (d1) { + mathutil_cat.warning(false) + << ", or " << hpr1 << "\n"; + } else { + mathutil_cat.warning(false) + << ", incorrectly converted to the non-ortho matrix:\n"; + mat2.write(mathutil_cat.warning(false), 4); + } + mathutil_cat.warning(false) + << " Quaternion: " << rot << "\n"; + if (d2) { + mathutil_cat.warning(false) + << " Which represents: hpr " << hpr2 << " scale " + << scale << "\n"; + } else { + mathutil_cat.warning(false) + << " Which is incorrectly converted to the following non-ortho matrix:\n"; + mat2.write(mathutil_cat.warning(false), 4); + } + } } +#endif qr.push_back(rot.get_r()); qi.push_back(rot.get_i()); @@ -398,7 +413,7 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { } // If quality is at least 102, we write all four quat components, - // instead of just the three. + // instead of just the three. This is just for debugging. #ifndef NDEBUG if (_quality >= 102) { write_reals(datagram, &qr[0], length); @@ -531,7 +546,7 @@ read_hprs(DatagramIterator &di, vector_LVecBase3f &array) { #ifndef NDEBUG if (_quality >= 104) { // If quality level is at least 104, we don't even convert hpr to - // quat. + // quat. This is just for debugging. vector_float h, p, r; bool okflag = true; okflag = @@ -550,7 +565,7 @@ read_hprs(DatagramIterator &di, vector_LVecBase3f &array) { } if (_quality >= 103) { // If quality level is 103, we read in a table of 3x3 rotation - // matrices. + // matrices. This is just for debugging. vector_float m00, m01, m02, m10, m11, m12,