Go to the documentation of this file.
9 #ifndef opengl_CGeneralizedEllipsoidTemplate_H
10 #define opengl_CGeneralizedEllipsoidTemplate_H
28 const float lineWidth,
29 const uint32_t slices,
30 const uint32_t stacks);
39 const uint32_t slices,
40 const uint32_t stacks);
41 template <>
void OPENGL_IMPEXP generalizedEllipsoidPoints<2>(
const mrpt::math::CMatrixFixedNumeric<double,2,2> & U,
const mrpt::math::CMatrixFixedNumeric<double,2,1> &
mean,std::vector<
mrpt::math::CMatrixFixedNumeric<float,2,1> > &out_params_pts,
const uint32_t slices,
const uint32_t stacks);
42 template <>
void OPENGL_IMPEXP generalizedEllipsoidPoints<3>(
const mrpt::math::CMatrixFixedNumeric<double,3,3> & U,
const mrpt::math::CMatrixFixedNumeric<double,3,1> &
mean,std::vector<
mrpt::math::CMatrixFixedNumeric<float,3,1> > &out_params_pts,
const uint32_t slices,
const uint32_t stacks);
70 template <
typename MATRIX,
typename VECTOR>
74 ASSERT_( new_cov.getColCount() == new_cov.getRowCount() && new_cov.getColCount() == DIM )
133 const double d=
m_cov.det();
134 if (fabs(d)<1e-20 || d!=d)
137 m_U.setZero(DIM,DIM);
147 for (
int i=0;i<DIM;i++)
148 if (
m_U.coeff(i,i)==0)
154 std::vector<array_parameter_t> params_pts;
159 std::vector<array_point_t> render_pts;
165 for (
size_t i=0;i<render_pts.size();i++)
166 for (
int k=0;k<DIM;k++)
176 mrpt::opengl::detail::renderGeneralizedEllipsoidTemplate<DIM>(render_pts,
203 const std::vector<array_point_t> ¶ms_pts,
204 std::vector<array_point_t> & out_pts)
const = 0;
219 const uint8_t version = 0;
const cov_matrix_t & getCovMatrix() const
Gets the current uncertainty covariance of parameter space.
#define THROW_EXCEPTION(msg)
mrpt::math::CMatrixFixedNumeric< double, DIM, DIM > cov_matrix_t
The type of fixed-size covariance matrices for this representation.
mrpt::math::CMatrixFixedNumeric< float, DIM, 1 > array_point_t
This file implements matrix/vector text and binary serialization.
mrpt::math::TPoint3D m_bb_min
uint32_t getNumberOfSegments()
float getLineWidth() const
void setNumberOfSegments(const uint32_t numSegments)
Set the number of segments of the surface/curve (higher means with greater resolution)
virtual void getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const MRPT_OVERRIDE
Evaluates the bounding box of this object (including possible children) in the coordinate frame of th...
A renderizable object suitable for rendering with OpenGL's display lists.
float getQuantiles() const
Refer to documentation of setQuantiles()
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
EIGEN_STRONG_INLINE void notifyChange() const
Must be called to notify that the object has changed (so, the display list must be updated)
float m_quantiles
The number of "sigmas" for drawing the ellipse/ellipsoid (default=3)
mrpt::math::CMatrixFixedNumeric< float, DIM, 1 > array_parameter_t
void OPENGL_IMPEXP generalizedEllipsoidPoints(const mrpt::math::CMatrixFixedNumeric< double, DIM, DIM > &U, const mrpt::math::CMatrixFixedNumeric< double, DIM, 1 > &mean, std::vector< mrpt::math::CMatrixFixedNumeric< float, DIM, 1 > > &out_params_pts, const uint32_t slices, const uint32_t stacks)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
mrpt::math::CMatrixFixedNumeric< double, DIM, 1 > mean_vector_t
The type of fixed-size vector for this representation.
float m_lineWidth
The line width for 2D ellipses or 3D wireframe ellipsoids (default=1)
void setQuantiles(float q)
Changes the scale of the "sigmas" for drawing the ellipse/ellipsoid (default=3, ~97 or ~98% CI); the ...
void render_dl() const MRPT_OVERRIDE
Render If one of the eigen value of the covariance matrix of the ellipsoid is null,...
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
void setLineWidth(float w)
The line width for 2D ellipses or 3D wireframe ellipsoids (default=1)
void composePoint(double lx, double ly, double lz, double &gx, double &gy, double &gz, mrpt::math::CMatrixFixedNumeric< double, 3, 3 > *out_jacobian_df_dpoint=NULL, mrpt::math::CMatrixFixedNumeric< double, 3, 6 > *out_jacobian_df_dpose=NULL, mrpt::math::CMatrixFixedNumeric< double, 3, 6 > *out_jacobian_df_dse3=NULL, bool use_small_rot_approx=false) const
An alternative, slightly more efficient way of doing with G and L being 3D points and P this 6D pose...
mrpt::poses::CPose3D m_pose
6D pose wrt the parent coordinate reference. This class automatically holds the cached 3x3 rotation m...
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
void setCovMatrixAndMean(const MATRIX &new_cov, const VECTOR &new_mean)
Set the NxN covariance matrix that will determine the aspect of the ellipsoid - Notice that the covar...
CGeneralizedEllipsoidTemplate()
void keep_max(T &var, const K test_val)
If the second argument is above the first one, set the first argument to this higher value.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
void OPENGL_IMPEXP renderGeneralizedEllipsoidTemplate(const std::vector< mrpt::math::CMatrixFixedNumeric< float, DIM, 1 > > &pts, const float lineWidth, const uint32_t slices, const uint32_t stacks)
void OPENGL_IMPEXP generalizedEllipsoidPoints< 3 >(const mrpt::math::CMatrixFixedNumeric< double, 3, 3 > &U, const mrpt::math::CMatrixFixedNumeric< double, 3, 1 > &mean, std::vector< mrpt::math::CMatrixFixedNumeric< float, 3, 1 > > &out_params_pts, const uint32_t slices, const uint32_t stacks)
void OPENGL_IMPEXP renderGeneralizedEllipsoidTemplate< 3 >(const std::vector< mrpt::math::CMatrixFixedNumeric< float, 3, 1 > > &pts, const float lineWidth, const uint32_t slices, const uint32_t stacks)
virtual bool traceRay(const mrpt::poses::CPose3D &o, double &dist) const MRPT_OVERRIDE
Ray tracing.
A numeric matrix of compile-time fixed size.
void thisclass_readFromStream(mrpt::utils::CStream &in)
void OPENGL_IMPEXP renderGeneralizedEllipsoidTemplate< 2 >(const std::vector< mrpt::math::CMatrixFixedNumeric< float, 2, 1 > > &pts, const float lineWidth, const uint32_t slices, const uint32_t stacks)
void keep_min(T &var, const K test_val)
If the second argument is below the first one, set the first argument to this lower value.
mrpt::math::TPoint3D m_bb_max
A class that generalizes the concept of an ellipsoid to arbitrary parameterizations of uncertainty sh...
EIGEN_STRONG_INLINE double mean() const
Computes the mean of the entire matrix.
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values,...
This base provides a set of functions for maths stuff.
cov_matrix_t m_U
Cholesky U triangular matrix cache. */.
bool m_needToRecomputeEigenVals
void OPENGL_IMPEXP generalizedEllipsoidPoints< 2 >(const mrpt::math::CMatrixFixedNumeric< double, 2, 2 > &U, const mrpt::math::CMatrixFixedNumeric< double, 2, 1 > &mean, std::vector< mrpt::math::CMatrixFixedNumeric< float, 2, 1 > > &out_params_pts, const uint32_t slices, const uint32_t stacks)
void thisclass_writeToStream(mrpt::utils::CStream &out) const
uint32_t m_numSegments
Number of segments in 2D/3D ellipsoids (default=10)
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
virtual ~CGeneralizedEllipsoidTemplate()
virtual void transformFromParameterSpace(const std::vector< array_point_t > ¶ms_pts, std::vector< array_point_t > &out_pts) const =0
To be implemented by derived classes: maps, using some arbitrary space transformation,...
Page generated by Doxygen 1.8.20 for MRPT 1.4.0 SVN: at Thu Aug 27 02:40:23 UTC 2020 | | |