better debugging output, clearer comments
This commit is contained in:
parent
88a61bb536
commit
811dbe5dd5
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue