Skip to content

Commit 0aea1ba

Browse files
committed
Update README and CHANGELOG
1 parent fe86a5c commit 0aea1ba

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
# Latest
4+
Interface changes
5+
* Exposing of Node's entities responsibility was moved to the Tree class
6+
7+
Performance improvements
8+
* `CollisionDetection()` (between different trees)
9+
* `RayIntersectedFirst()`
10+
* `GetNearestNeighbors()`
11+
12+
Miscellaneous
13+
* Automatic Benchmark is added
14+
15+
Bugfixes
16+
* Minor bugfixes in `InsertWithRebalance()`
17+
318
## 2025-01-19 v2.5
419
Interface changes
520
* `std::execution` is dropped from the interface. `bool IS_PARALLEL_EXEC` is used instead.

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,16 @@ What is Morton-Z space-filling curve? https://en.wikipedia.org/wiki/Z-order_curv
6262
* If less element is collected in a node than the max element then the child node won't be created.
6363
* The underlying container is a hash-table (`std::unordered_map`) under 16D, which only stores the id-s and the bounding box of the child nodes.
6464
* Original geometry data is not stored, so any search function needs them as an input.
65-
* Unit tests are attached. (Microsoft Unit Testing Framework for C++)
66-
* Tested compilers: MSVC 2022, Clang 12.0.0, GCC 11.3
65+
* Tested compilers: MSVC 2022, Clang 12.0.0, GCC 11.3, AppleClang 16.0.0
66+
67+
## Recommendations
68+
* If the geometrical entities are already available, build the tree using the Constructor or Create, rather than entity-wise Insertions. This can result in a significant performance gain.
69+
* For tree building, `InsertWithRebalancing()` offers much better performance than Insert() with leaf-node settings.
70+
* If the box tree is used only for collision detection, set `SPLIT_DEPTH_INCREASEMENT = 0` (`OctreeBox` uses 2 by default). Both creation and collision detection will be significantly faster.
71+
* For `Pick`/`Range`/`Ray`/`Plane` related search, the default `SPLIT_DEPTH_INCREASEMENT = 2` is recommended.
72+
* If the overall modeling space size changes dynamically, this tool cannot be applied directly. However, you can combine it with sparse grid-based spatial partitioning, where each cell contains an `Orthotree`.
73+
* After calling `Init()`, the max depth cannot be changed, and the tree cannot be deepened further.
74+
* See the **BENCHMARKS** page for performance-related graphs.
6775

6876
## Attached adapters
6977
* Default: 2D, 3D...63D; `std::array` based structures (`PointND`, `VectorND`, `BoundingBoxND`, `RayND`, `PlaneND`)

0 commit comments

Comments
 (0)