Skip to content

Commit 539317a

Browse files
committed
FIX: mrpt::opengl::CEllipsoid3D wrong direction
1 parent 58275bc commit 539317a

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

modules/mrpt_opengl/include/mrpt/opengl/CGeneralizedEllipsoidTemplate.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,16 @@ class CGeneralizedEllipsoidTemplate :
292292
else
293293
{
294294
// A valid matrix:
295-
m_cov.chol(m_U);
295+
std::vector<double> eVals;
296+
m_cov.eig(m_U, eVals);
297+
for (size_t i = 0; i < DIM; i++)
298+
{
299+
const auto s = std::sqrt(eVals[i]);
300+
for (size_t k = 0; k < DIM; k++)
301+
{
302+
m_U(k, i) *= s;
303+
}
304+
}
296305
}
297306
}
298307

modules/mrpt_viz/include/mrpt/viz/CGeneralizedEllipsoidTemplate.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,16 @@ class CGeneralizedEllipsoidTemplate : virtual public CVisualObject, public Visua
241241
else
242242
{
243243
// A valid matrix:
244-
m_cov.chol(m_U);
244+
std::vector<double> eVals;
245+
m_cov.eig(m_U, eVals);
246+
for (size_t i = 0; i < DIM; i++)
247+
{
248+
const auto s = std::sqrt(eVals[i]);
249+
for (size_t k = 0; k < DIM; k++)
250+
{
251+
m_U(k, i) *= s;
252+
}
253+
}
245254
}
246255
}
247256

0 commit comments

Comments
 (0)