Program Listing for File VirtualGrid.hpp

Return to documentation for file (include/lvr2/reconstruction/VirtualGrid.hpp)

/*
 * VirtualGrid.hpp
 *
 *  @date 17.09.19
 *  @author Pao
 */

#ifndef VIRTUALGRID_H
#define VIRTUALGRID_H
#include "BigGrid.hpp"
#include "lvr2/geometry/BoundingBox.hpp"

#include <memory>
#include <vector>

namespace lvr2
{

template <typename BaseVecT>
class VirtualGrid
{
  public:
    VirtualGrid(BoundingBox<BaseVecT>& bb,
                  float gridCellSize,
                  float voxelsize);


    virtual ~VirtualGrid() = default;

    void calculateBoxes();

    void setBoundingBox(BoundingBox<BaseVecT> bb);

    const std::vector<BoundingBox<BaseVecT>>& getBoxes() { return m_boxes; }

  private:
    void findInitialBox();



    void generateNeighbours();

    // BoundingBox of the input PointCloud
    BoundingBox<BaseVecT> m_pcbb;

    // initial Bounding Box, around the left corner of the PointCloud-BB
    BoundingBox<BaseVecT> m_initbox;

    // List of (smaller) BoundingBox (aka Chunks), which overlap the original PointCloud
    std::vector<BoundingBox<BaseVecT>> m_boxes;

    // size of the "virtual" GridCell aka ChunkSize
    float m_gridCellSize;

    // voxelsize to verify the cellsize/chunksize
    float m_voxelsize;

};

} // namespace lvr2

#include "lvr2/reconstruction/VirtualGrid.tcc"

#endif // VIRTUALGRID_H