Program Listing for File BigVolumen.hpp
↰ Return to documentation for file (include/lvr2/reconstruction/BigVolumen.hpp)
/*
* BigVolumen.hpp
*
* Created on: Jul 17, 2017
* Author: Isaak Mitschke
*/
#ifndef LAS_VEGAS_BigVolumen_HPP
#define LAS_VEGAS_BigVolumen_HPP
#include "lvr2/geometry/BoundingBox.hpp"
#include "lvr2/io/DataStruct.hpp"
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/iostreams/device/mapped_file.hpp>
#include <fstream>
#include <sstream>
#include <string>
#include <unordered_map>
#include <utility>
#ifndef __APPLE__
#include <omp.h>
#endif
namespace lvr2
{
template <typename BaseVecT>
class BigVolumen
{
public:
struct VolumeCellInfo
{
VolumeCellInfo() : size(0), overlapping_size(0) {}
size_t size;
size_t overlapping_size;
size_t ix;
size_t iy;
size_t iz;
std::string path;
BoundingBox<BaseVecT> bb;
std::ofstream ofs_points;
std::ofstream ofs_normals;
std::ofstream ofs_colors;
};
BigVolumen(std::vector<std::string>,
float voxelsize,
float overlapping_size = 0,
float scale = 1);
size_t size();
size_t pointSize();
BoundingBox<BaseVecT>& getBB() { return m_bb; }
virtual ~BigVolumen();
inline size_t hashValue(size_t i, size_t j, size_t k)
{
return i * m_maxIndexSquare + j * m_maxIndex + k;
}
inline bool hasColors() { return m_has_color; }
inline bool hasNormals() { return m_has_normal; }
inline std::unordered_map<size_t, VolumeCellInfo>* getCellinfo() { return &m_gridNumPoints; };
private:
inline int calcIndex(float f) { return f < 0 ? f - .5 : f + .5; }
size_t m_maxIndexSquare;
size_t m_maxIndex;
size_t m_maxIndexX;
size_t m_maxIndexY;
size_t m_maxIndexZ;
size_t m_numPoints;
float m_voxelSize;
bool m_extrude;
bool m_has_normal;
bool m_has_color;
boost::iostreams::mapped_file m_PointFile;
boost::iostreams::mapped_file m_NomralFile;
boost::iostreams::mapped_file m_ColorFile;
BoundingBox<BaseVecT> m_bb;
std::unordered_map<size_t, VolumeCellInfo> m_gridNumPoints;
float m_scale;
};
} // namespace lvr2
#include "lvr2/reconstruction/BigVolumen.tcc"
#endif // LAS_VEGAS_BigVolumen_HPP