From f6c7648870804d5b2d7752bbaf7f0659a1ba7290 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 10 Feb 2020 17:39:36 +0100 Subject: [PATCH] Mesh: [skip ci] add methods to create empty KD tree or to add further points --- src/Mod/Mesh/App/Core/KDTree.cpp | 26 ++++++++++++++++++++++++++ src/Mod/Mesh/App/Core/KDTree.h | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/src/Mod/Mesh/App/Core/KDTree.cpp b/src/Mod/Mesh/App/Core/KDTree.cpp index 7192a3cd5f..c7a7f72377 100644 --- a/src/Mod/Mesh/App/Core/KDTree.cpp +++ b/src/Mod/Mesh/App/Core/KDTree.cpp @@ -74,6 +74,10 @@ public: MyKDTree kd_tree; }; +MeshKDTree::MeshKDTree() : d(new Private) +{ +} + MeshKDTree::MeshKDTree(const std::vector& points) : d(new Private) { unsigned long index=0; @@ -95,6 +99,28 @@ MeshKDTree::~MeshKDTree() delete d; } +void MeshKDTree::AddPoint(Base::Vector3f& point) +{ + unsigned long index=d->kd_tree.size(); + d->kd_tree.insert(Point3d(point, index)); +} + +void MeshKDTree::AddPoints(const std::vector& points) +{ + unsigned long index=d->kd_tree.size(); + for (std::vector::const_iterator it = points.begin(); it != points.end(); ++it) { + d->kd_tree.insert(Point3d(*it, index++)); + } +} + +void MeshKDTree::AddPoints(const MeshPointArray& points) +{ + unsigned long index=d->kd_tree.size(); + for (MeshPointArray::_TConstIterator it = points.begin(); it != points.end(); ++it) { + d->kd_tree.insert(Point3d(*it, index++)); + } +} + bool MeshKDTree::IsEmpty() const { return d->kd_tree.empty(); diff --git a/src/Mod/Mesh/App/Core/KDTree.h b/src/Mod/Mesh/App/Core/KDTree.h index 63649e65bd..39e396368c 100644 --- a/src/Mod/Mesh/App/Core/KDTree.h +++ b/src/Mod/Mesh/App/Core/KDTree.h @@ -32,10 +32,15 @@ namespace MeshCore class MeshExport MeshKDTree { public: + MeshKDTree(); MeshKDTree(const std::vector& points); MeshKDTree(const MeshPointArray& points); ~MeshKDTree(); + void AddPoint(Base::Vector3f& point); + void AddPoints(const std::vector& points); + void AddPoints(const MeshPointArray& points); + bool IsEmpty() const; void Clear(); void Optimize();