74 double resolution_XYZ = 0.10,
164 double resolution_XYZ,
double resolution_YPR)
207 double x,
double y,
double z,
double yaw,
double pitch,
216 double x,
double y,
double z,
double yaw,
double pitch,
double roll)
233 const T*
getByIndex(
int cx,
int cy,
int cz,
int cY,
int cP,
int cR)
const 236 cx < static_cast<int>(
m_sizeX) && cy < static_cast<int>(
m_sizeY) &&
237 cz < static_cast<int>(
m_sizeZ) &&
246 T*
getByIndex(
int cx,
int cy,
int cz,
int cY,
int cP,
int cR)
249 cx, cy, cz, cY, cP, cR));
255 template <
class MATRIXLIKE>
257 MATRIXLIKE& outMat,
const double z,
const double yaw,
258 const double pitch,
const double roll)
const 268 for (uint32_t cy = 0; cy <
m_sizeY; cy++)
269 for (uint32_t cx = 0; cx <
m_sizeX; cx++)
270 outMat(cy, cx) = *
getByIndex(cx, cy, cz, cY, cP, cR);
const T * getByIndex(int cx, int cy, int cz, int cY, int cP, int cR) const
Reads the contents of a cell.
const std::vector< T > & getData() const
int z2idx(double z) const
T * getByIndex(int cx, int cy, int cz, int cY, int cP, int cR)
void update_cached_size_products()
auto getTotalVoxelCount() const
double getResolutionXYZ() const
int y2idx(double y) const
#define ASSERT_BELOW_(__A, __B)
double roll
Roll coordinate (rotation angle over X coordinate).
double idx2z(uint32_t cz) const
double idx2y(uint32_t cy) const
std::vector< T > & getData()
This is a template class for storing a 6-dimensional grid, with components corresponding to Euler ang...
double yaw
Yaw coordinate (rotation angle over Z axis).
int roll2idx(double roll) const
mrpt::math::TPose3D getMaxBoundingBox() const
double idx2x(uint32_t cx) const
int yaw2idx(double yaw) const
#define ASSERT_(f)
Defines an assertion mechanism.
double idx2yaw(uint32_t cY) const
void getAsMatrix(MATRIXLIKE &outMat, const double z, const double yaw, const double pitch, const double roll) const
Returns a XY slice of the grid, for given constant z,yaw, pitch and roll.
double m_resolutionXYZ
Resolution of the grid.
void setSize(const mrpt::math::TPose3D &bb_min, const mrpt::math::TPose3D &bb_max, double resolution_XYZ, double resolution_YPR)
Changes the limits and size of the grid, erasing previous contents:
constexpr double DEG2RAD(const double x)
Degrees to radians.
T * getByPos(double x, double y, double z, double yaw, double pitch, double roll)
std::vector< T > m_data
The data.
mrpt::math::TPose3D m_bb_max
double idx2pitch(uint32_t cP) const
mrpt::math::TPose3D m_bb_min
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
double pitch
Pitch coordinate (rotation angle over Y axis).
int m_min_cidX
Minimum "cell indexes" for each coordinate.
virtual ~CPose3DGridTemplate()=default
CPose3DGridTemplate(const mrpt::math::TPose3D &bb_min=mrpt::math::TPose3D(-1., -1., -1., -M_PI, -.5 *M_PI, -.5 *M_PI), const mrpt::math::TPose3D &bb_max=mrpt::math::TPose3D(1., 1., 1., M_PI,.5 *M_PI,.5 *M_PI), double resolution_XYZ=0.10, double resolution_YPR=mrpt::DEG2RAD(10.0))
Default constructor:
#define ASSERT_ABOVE_(__A, __B)
Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).
double idx2roll(uint32_t cR) const
int x2idx(double x) const
T * getByPos(const mrpt::math::TPose3D &p)
const T * getByPos(const mrpt::math::TPose3D &p) const
mrpt::math::TPose3D getMinBoundingBox() const
Get info about the 6D grid.
const T * getByPos(double x, double y, double z, double yaw, double pitch, double roll) const
Reads the contents of a cell.
int pitch2idx(double pitch) const
auto getSizePitch() const
double getResolutionAngles() const
int round(const T value)
Returns the closer integer (int) to x.