You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Support for topological spaces with identifications. E.g., points on the circle `[-pi, pi]`.
35
-
* Available metrics: `L1`, `L2Squared`, `SO2`, and `SE2Squared`. Metrics can be customized.
36
-
* Compile time and run time known dimensions.
37
-
* Static tree builds.
38
-
* Thread safe queries.
39
-
* PicoTree can interface with different types of points or point sets through traits classes. These can be custom implementations or one of the `pico_tree::PointTraits<>` and `pico_tree::SpaceTraits<>` classes provided by this library. There is default support for the following data types:
* Support for topological spaces with identifications. E.g., points on the circle `[-pi, pi]`.
34
+
* Available metrics: `L1`, `L2Squared`, `SO2`, and `SE2Squared`. Metrics can be customized.
35
+
* Multiple tree splitting rules: `kLongestMedian`, `kMidpoint` and `kSlidingMidpoint`.
36
+
* Compile time and run time known dimensions.
37
+
* Static tree builds.
38
+
* Thread safe queries.
39
+
40
+
PicoTree can interface with different types of points and point sets through traits classes. These can be custom implementations or one of the `pico_tree::SpaceTraits<>` and `pico_tree::PointTraits<>` classes provided by this library.
41
+
* Space type support:
40
42
*`std::vector<PointType>`.
41
-
* A specialization of `pico_tree::PointTraits<>` is required for each `PointType`. There are traits available for Eigen and OpenCV point types.
42
-
*`pico_tree::SpaceMap<PointType>` and `pico_tree::PointMap<>`.
43
-
* These classes allow interfacing with raw pointers. It is assumed that points and their coordinates are laid out contiguously in memory.
44
-
*`Eigen::Matrix` and `Eigen::Map<Eigen::Matrix>`.
43
+
*`pico_tree::SpaceMap<PointType>`.
44
+
*`Eigen::Matrix<>` and `Eigen::Map<Eigen::Matrix<>>`.
45
45
*`cv::Mat`.
46
+
* Point type support:
47
+
* Fixed size arrays and `std::array<>`.
48
+
*`pico_tree::PointMap<>`.
49
+
*`Eigen::Vector<>` and `Eigen::Map<Eigen::Vector<>>`.
50
+
*`cv::Vec<>`.
51
+
*`pico_tree::SpaceMap<PointType>` and `pico_tree::PointMap<>` allow interfacing with dynamic size arrays. It is assumed that points and their coordinates are laid out contiguously in memory.
46
52
47
53
# Examples
48
54
49
-
*[Minimal working example](./examples/kd_tree/kd_tree_minimal.cpp) using an std::vector of points.
50
-
* Creating [traits](./examples/kd_tree/kd_tree_traits.cpp) classes for a custom point and point set.
51
-
* Using the KdTree's [search](./examples/kd_tree/kd_tree_search.cpp) options and creating a custom search visitor.
55
+
*[Minimal working example](./examples/kd_tree/kd_tree_minimal.cpp) using an `std::vector<>` of points.
56
+
*[Creating a KdTree](./examples/kd_tree/kd_tree_creation.cpp) and taking the input by value or reference.
57
+
* Using the KdTree's [search](./examples/kd_tree/kd_tree_search.cpp) capabilities.
58
+
* Working with [dynamic size arrays](./examples/kd_tree/kd_tree_dynamic_arrays.cpp).
59
+
* Supporting a [custom point type](./examples/kd_tree/kd_tree_custom_point_type.cpp).
60
+
* Supporting a [custom space type](./examples/kd_tree/kd_tree_custom_space_type.cpp).
61
+
* Creating a [custom search visitor](./examples/kd_tree/kd_tree_custom_search_visitor.cpp).
52
62
* Support for [Eigen](./examples/eigen/eigen.cpp) and [OpenCV](./examples/opencv/opencv.cpp) data types.
53
63
* How to use the [KdTree with Python](./examples/python/kd_tree.py).
0 commit comments