Nanoflann Versions Save

nanoflann: a C++11 header-only library for Nearest Neighbor (NN) search with KD-trees


1 month ago

What's Changed

New Contributors

Full Changelog:

(See full discussion on the need to benchmark your data in )

For 4 threads vs 1 thread

Screenshot from 2024-03-12 00-04-33


3 months ago

nanoflann 1.5.4: Released Jan 10, 2024

  • Fix outdated NANOFLANN_VERSION macro in header file
  • Fix poll-allocator alignment problems
  • Look for Threads dependency in CMake config script


4 months ago

nanoflann 1.5.3: Released Dec 7, 2023

  • Other changes:
    • Save one redundant call to computeMinMax() in middleSplit_ (PR#220 by qq422216549). This saves a lot of time, up to 20% faster in a benchmark with small (thousands) point clouds.


4 months ago

nanoflann 1.5.2: Released Nov 29, 2023

  • Other changes:
    • Improve RKNN search efficiency (PR#219 by kya8).


4 months ago

nanoflann 1.5.1: Released Nov 27, 2023

  • API changes:
    • Add new search method rknnSearch() for knn searches with a maximum radius.
    • Add missing SearchParameters argument to KDTreeSingleIndexDynamicAdaptor_::knnSearch() (PR#213 by ManosPapadakis95).
    • Add missing method KNNResultSet::empty() for consistency with the other result sets.
  • Other changes:
    • Add GUI examples for each search type:
      • nanoflann_gui_example_R3_knn
      • nanoflann_gui_example_R3_radius
      • nanoflann_gui_example_R3_rknn


10 months ago

nanoflann 1.5.0: Released Jun 16, 2023

  • API changes:
    • Users of radius search should change their result placeholder type: std::vector<std::pair<IndexType, DistanceType>> => std::vector<nanoflann::ResultItem<IndexType, DistanceType>>. (See #166 for the motivation of this change).
    • More concise auxiliary (internal) type name: array_or_vector_selector -> array_or_vector.
    • Remove obsolete parameter nChecks_IGNORED. Removed from SearchParams constructor too, so that structure has been renamed SearchParameters to enforce users to update the code and avoid mistakes with the order of its ctor parameters.
    • Added method RadiusResultSet::empty()
    • Template argument rename: AccesorType => IndexType (does not actually affect user code at all).
    • Added concurrent tree building support, refer to KDTreeSingleIndexAdaptorParams::n_thread_build.
  • Other changes:
    • Macros to avoid conflicts with X11 symbols.
    • Inline an auxiliary example function in case users want to use it and include the file in multiple translation units (Closes #182).
    • Move all benchmarking code, data, and scripts to its own repository to keep this repo as clean as possible.
    • Fix "potentially uninitialized" GCC warning.
    • Clarified, even more, in docs and examples, that L2 distances are squared distances.
    • Removed the (with modern compilers) now useless inline keyword in class members.
    • Add examples with GUI (requires mrpt-gui):
      • nanoflann_gui_example_R3: Radius search on R³ Euclidean space.
      • nanoflann_gui_example_bearings: NN search on non-Euclidean spaces.
    • Avoid segfault if saving an empty index (Closes #205).


1 year ago

nanoflann 1.4.3: Released Jul 24, 2022

  • Added flag SkipInitialBuildIndex to allow not wasting time building a tree when it will be loaded from a file later on (PR #171).
  • Mark all constructors explicit, to avoid unintended creation of temporary objects (Issue #179).
  • BUGFIX: avoid potential index out of bounds in KDTreeSingleIndexDynamicAdaptor (PR #173)


2 years ago

nanoflann 1.4.2: Released Jan 11, 2022

  • Install pkg-config .pc file under lib directory (Closes #161).
  • Integrate AppVeyor CI.


2 years ago

nanoflann 1.4.1: Released Jan 6, 2022

  • Fix incorrect install directory for cmake target & config files.
  • Do not install example binaries with make install.
  • Provide working examples for cmake and pkgconfig under examples/example_* directories.


2 years ago

nanoflann 1.4.0: Released Jan 2, 2022

  • nanoflann::KDTreeSingleIndexAdaptor() ctor now forwards additional parameters to the metric class, enabling custom dynamic metrics.
  • Add and apply a .clang-format file (same one than used in MOLAorg/MOLA projects).
  • Examples: clean up and code modernization.
  • CMake variables prefixed now with NANOFLANN_ for easier integration of nanoflann as a Git submodule.
  • Fixes for IndexType which are not of integral types PR #154
  • save/load API upgraded from C FILE* to C++ file streams (By Dominic Kempf, Heidelberg University, PR).