diff --git a/CMakeLists.txt b/CMakeLists.txt index ebc34e1..4b8fbf3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/utils.cmake) project(pico_tree LANGUAGES CXX - VERSION 0.8.2 + VERSION 0.8.3 DESCRIPTION "PicoTree is a C++ header only library for fast nearest neighbor searches and range searches using a KdTree." HOMEPAGE_URL "https://github.com/Jaybro/pico_tree") diff --git a/README.md b/README.md index 81e8268..bc94b8f 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ PicoTree is a C++ header only library with [Python bindings](https://github.com/ | [Scikit-learn KDTree][skkd] 1.2.2 | ... | 6.2s | ... | 42.2s | | [pykdtree][pykd] 1.3.7 | ... | 1.0s | ... | 6.6s | | [OpenCV FLANN][cvfn] 4.6.0 | 1.9s | ... | 4.7s | ... | -| PicoTree KdTree v0.8.2 | 0.9s | 1.0s | 2.8s | 3.1s | +| PicoTree KdTree v0.8.3 | 0.9s | 1.0s | 2.8s | 3.1s | Two [LiDAR](./docs/benchmark.md) based point clouds of sizes 7733372 and 7200863 were used to generate these numbers. The first point cloud was the input to the build algorithm and the second to the query algorithm. All benchmarks were run on a single thread with the following parameters: `max_leaf_size=10` and `knn=1`. A more detailed [C++ comparison](./docs/benchmark.md) of PicoTree is available with respect to [nanoflann][nano]. diff --git a/docs/benchmark.md b/docs/benchmark.md index 8f4252a..42b6779 100644 --- a/docs/benchmark.md +++ b/docs/benchmark.md @@ -4,7 +4,7 @@ One of the PicoTree examples contains [benchmarks](../examples/benchmark/) of di The results described in this document were generated on 29-08-2021 using MinGW GCC 10.3, PicoTree v0.7.4 and Nanoflann v1.3.2. -Note: The performance of PicoTree v0.8.2 released on 07-09-2023 is identical to that of v0.7.4. However, the build algorithm of nanoflann v1.5.0 regressed and has become 90% slower. +Note: The performance of PicoTree v0.8.3 released on 26-09-2023 is identical to that of v0.7.4. However, the build algorithm of nanoflann v1.5.0 regressed and has become 90% slower. # Data sets diff --git a/setup.py b/setup.py index 3a93698..2a6f88a 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup(name='pico_tree', # The same as the CMake project version. - version='0.8.2', + version='0.8.3', description='PicoTree Python Bindings', author='Jonathan Broere', url='https://github.com/Jaybro/pico_tree', diff --git a/src/pico_tree/pico_tree/internal/kd_tree_builder.hpp b/src/pico_tree/pico_tree/internal/kd_tree_builder.hpp index d34989b..601b189 100644 --- a/src/pico_tree/pico_tree/internal/kd_tree_builder.hpp +++ b/src/pico_tree/pico_tree/internal/kd_tree_builder.hpp @@ -46,7 +46,7 @@ enum class SplittingRule { namespace internal { -//! \see SplittingRule::kLongestMedian +//! \copydoc SplittingRule::kLongestMedian template class SplitterLongestMedian { using ScalarType = typename SpaceWrapper_::ScalarType; @@ -86,7 +86,7 @@ class SplitterLongestMedian { SpaceWrapper_ space_; }; -//! \see SplittingRule::kMidpoint +//! \copydoc SplittingRule::kMidpoint template class SplitterMidpoint { using ScalarType = typename SpaceWrapper_::ScalarType; @@ -122,7 +122,7 @@ class SplitterMidpoint { SpaceWrapper_ space_; }; -//! \see SplittingRule::kSlidingMidpoint +//! \copydoc SplittingRule::kSlidingMidpoint template class SplitterSlidingMidpoint { using ScalarType = typename SpaceWrapper_::ScalarType; diff --git a/src/pico_tree/pico_tree/internal/point_wrapper.hpp b/src/pico_tree/pico_tree/internal/point_wrapper.hpp index 9a88d44..9e578df 100644 --- a/src/pico_tree/pico_tree/internal/point_wrapper.hpp +++ b/src/pico_tree/pico_tree/internal/point_wrapper.hpp @@ -3,8 +3,14 @@ #include "pico_tree/core.hpp" #include "pico_tree/point_traits.hpp" -namespace pico_tree ::internal { - +namespace pico_tree::internal { + +//! \brief The PointWrapper class wraps makes working with any point type +//! through its respective PointTraits a bit easier and it allows for the +//! addition of extra convenience methods. +//! \details The internals of PicoTree never use the specializations of the +//! PointTraits class directly, but interface with any point type through this +//! wrapper interface. template class PointWrapper { using PointTraitsType = PointTraits; diff --git a/src/pico_tree/pico_tree/internal/space_wrapper.hpp b/src/pico_tree/pico_tree/internal/space_wrapper.hpp index 5387859..c1491b3 100644 --- a/src/pico_tree/pico_tree/internal/space_wrapper.hpp +++ b/src/pico_tree/pico_tree/internal/space_wrapper.hpp @@ -6,6 +6,12 @@ namespace pico_tree::internal { +//! \brief The SpaceWrapper class wraps makes working with any space type +//! through its respective SpaceTraits a bit easier and it allows for the +//! addition of extra convenience methods. +//! \details The internals of PicoTree never use the specializations of the +//! SpaceTraits class directly, but interface with any space type through this +//! wrapper interface template class SpaceWrapper { using SpaceTraitsType = SpaceTraits; diff --git a/src/pico_tree/pico_tree/point_traits.hpp b/src/pico_tree/pico_tree/point_traits.hpp index f576c3d..42e35fa 100644 --- a/src/pico_tree/pico_tree/point_traits.hpp +++ b/src/pico_tree/pico_tree/point_traits.hpp @@ -4,9 +4,11 @@ namespace pico_tree { //! \brief PointTraits provides an interface for the different point types that //! are supported by PicoTree. -//! \details Example use of PointTraits can be seen in -//! SpaceTraits>. +//! \details Examples of how a PointTraits can be created and used are linked +//! below. //! \tparam Point_ Any of the point types supported by PointTraits. +//! \see PointTraits +//! \see SpaceTraits> template struct PointTraits;