diff --git a/GeoLib/Surface.cpp b/GeoLib/Surface.cpp index dba6e27e8b9c343e4907a97b0cf2764cf1a1a011..2c6f3d8fb0194d9c648f8bf2fb8a295045f00b8b 100644 --- a/GeoLib/Surface.cpp +++ b/GeoLib/Surface.cpp @@ -35,6 +35,18 @@ Surface::Surface(const std::vector<Point*>& pnt_vec) { } +Surface::Surface(Surface const& src) + : _sfc_pnts(src._sfc_pnts), + _bounding_volume(new AABB(*(src._bounding_volume))), + _surface_grid(nullptr) +{ + _sfc_triangles.reserve(src._sfc_triangles.size()); + std::transform(src._sfc_triangles.cbegin(), + src._sfc_triangles.cend(), + std::back_inserter(_sfc_triangles), + [](Triangle* t) { return new Triangle(*t); }); +} + Surface::~Surface() { for (std::size_t k(0); k < _sfc_triangles.size(); k++) diff --git a/GeoLib/Surface.h b/GeoLib/Surface.h index ac6460ac782f55f5bc38284609529743a9575e07..494b9574ee9e86c8657c267b2583192094fa7c92 100644 --- a/GeoLib/Surface.h +++ b/GeoLib/Surface.h @@ -36,6 +36,7 @@ class Surface final : public GeoObject { public: explicit Surface(const std::vector<Point*>& pnt_vec); + Surface(Surface const& src); ~Surface(); /// return a geometry type