Commit Graph

91 Commits

Author SHA1 Message Date
JacksonCampolattaro 32c6d61f27 Eliminate Array and Construct_point_d_from_array 2023-09-07 11:44:14 +02:00
JacksonCampolattaro bf5bbcc0f1 Add `construct_point_d_object` to traits classes
Not yet documented by the OrthtreeTraits concept. Will replace construct_point_d_from_array.
2023-09-06 14:23:47 +02:00
JacksonCampolattaro 039b693b61 Add support for trees with non-cubic bounding boxes
High-order orthtrees break, because Epick_d::Point is somehow defined as an array
2023-09-02 17:37:34 +02:00
JacksonCampolattaro fd34fb5302 `root_node_contents` now produces a Bbox directly
Some tests fail due to non-cubic bounding boxes
2023-09-02 16:49:32 +02:00
JacksonCampolattaro 51aae3a6a8 Bbox construction functor is no longer necessary; Bbox_d type must be constructible from a pair of points 2023-09-02 15:19:07 +02:00
JacksonCampolattaro 40b2c0dff0 Convert nearest neighbor methods to free functions 2023-09-01 17:16:54 +02:00
JacksonCampolattaro 77f240b1b6 Delete Orthtree::Node class, now used nowhere 2023-08-31 12:48:52 +02:00
JacksonCampolattaro 2d8f7d483d Rename Properties.h for clarity 2023-08-30 15:32:38 +02:00
JacksonCampolattaro 07c671e6e9 Convert methods to functor objects for consistency (proof-of-concept) 2023-08-29 19:13:11 +02:00
JacksonCampolattaro 8fe57f5adf Rename traverse_indices to traverse (now that it's the only traversal function) 2023-07-27 09:49:20 +02:00
JacksonCampolattaro 5bc0962b81 Eliminate non-index versions of split predicates & traversals 2023-07-26 14:13:00 +02:00
JacksonCampolattaro 4998f7bc57 Adapt remaining examples to use the generalized orthtree 2023-07-26 13:48:36 +02:00
JacksonCampolattaro 61a29f0fdb Fix an issue where side-per-depth wasn't updated when a node was manually split 2023-07-26 09:57:44 +02:00
JacksonCampolattaro cfdb167e35 Fix a couple of small issues which came up during LCC conversion 2023-07-18 10:35:48 +02:00
JacksonCampolattaro 03cda70191 Replace boost::optional with std::optional 2023-07-09 17:49:12 +02:00
JacksonCampolattaro dc18e1b1db Replace `tree.points(node)` with `tree.data(node)` 2023-06-27 14:58:13 +02:00
JacksonCampolattaro b08eabae93 Move point-specific functionality to traits class
(only Point_3 is currently supported)
2023-06-26 16:59:02 +02:00
JacksonCampolattaro c41faf1274 Delete independent `Node` type, move relevant typedefs to Orthtree.h 2023-06-25 13:54:19 +02:00
JacksonCampolattaro 01aad4af7a Add a minimal test of custom node properties 2023-06-25 12:42:24 +02:00
JacksonCampolattaro 774aa1f324 Add node-access convenience functions, and simplify tests 2023-06-22 15:24:39 +02:00
JacksonCampolattaro bfe584590e Orthtree no longer instantiates Node types 2023-06-22 14:44:38 +02:00
JacksonCampolattaro 08b418bda2 Ensure properties of a moved-from tree are also moved-from 2023-06-22 14:11:30 +02:00
JacksonCampolattaro ed9266e70f Add parallel node system using properties
bug: moved-from is not reset
2023-06-22 10:23:29 +02:00
JacksonCampolattaro d1ac73d087 Use index-based access for split predicates 2023-06-21 17:34:26 +02:00
JacksonCampolattaro b09e4d0fa6 Add a property container with all aspects of the nodes (currently unused) 2023-06-21 16:39:17 +02:00
JacksonCampolattaro 9a52cf7026 Add a "Maybe" type hiding the boost::optional implementation detail 2023-04-25 16:07:00 +02:00
JacksonCampolattaro 53b3278d3f root() now returns an index, like parent() and child() 2023-04-25 15:21:02 +02:00
JacksonCampolattaro e7f236678e Replace children() helper with individual child() access 2023-04-25 13:48:21 +02:00
JacksonCampolattaro 33358ae838 Only access node properties through helpers
This will make later refactoring to use property maps much simpler
2023-04-25 12:15:46 +02:00
JacksonCampolattaro 0707300f99 reassign_points() implemented in terms of indices 2023-04-25 11:32:11 +02:00
JacksonCampolattaro 43b7543d3b nearest_k_neighbors() implemented in terms of indices 2023-04-25 11:24:56 +02:00
JacksonCampolattaro 8712032193 adjacent_node() implemented in terms of indices 2023-04-25 11:11:53 +02:00
JacksonCampolattaro d761f6ebc0 adjacent_node() now returns an optional index 2023-04-25 10:57:56 +02:00
JacksonCampolattaro 825abd1727 Locate now returns a node index 2023-04-24 14:01:01 +02:00
JacksonCampolattaro 782561598e Intersection writes indices to the output iterator 2023-04-24 13:49:13 +02:00
JacksonCampolattaro b267403b95 Recursive intersection now uses indices 2023-04-24 13:38:05 +02:00
JacksonCampolattaro c0a8bbf2c9 Topology equality is done by index 2023-04-20 11:57:35 +02:00
JacksonCampolattaro b9ed5a4221 Relative node access is now done only by index 2023-04-19 19:11:59 +02:00
JacksonCampolattaro b4f04645f1 Level traversal is done by index, has a new unit test 2023-04-19 18:44:30 +02:00
JacksonCampolattaro 62fa9db7a6 Preorder traversal is now implemented in terms of indices 2023-04-19 10:42:48 +02:00
JacksonCampolattaro 07968655f6 Add support for traversal by index 2023-04-18 14:45:00 +02:00
JacksonCampolattaro 8c12fd3bc7 Implement desired behavior for repeated refinement 2023-04-12 12:10:53 +02:00
JacksonCampolattaro 4e3fc7edf6 Add shims for using functions with indices 2023-04-12 11:17:57 +02:00
JacksonCampolattaro 9103affe72 Splitting is done by index (internally)
Pre-allocating nodes is no longer necessary, since refine() isn't broken by pointer invalidation
2023-04-11 17:52:52 +02:00
JacksonCampolattaro a5a92ad795 Traversal is now done by index (internally) 2023-04-11 12:17:32 +02:00
JacksonCampolattaro 1a1ca5cf28 Node access is now done solely by index
Nodes no longer hold references to their parents and children
2023-03-31 15:58:42 +02:00
JacksonCampolattaro 14726a1e41 Add functions to get node indices & retrieve nodes by index 2023-03-29 22:46:52 +02:00
JacksonCampolattaro 6dec072b00 Node parent access is now done through the tree 2023-03-29 16:38:45 +02:00
JacksonCampolattaro 45244da9e1 Node can no longer directly access its children without the tree
This is necessary for the next step, but makes the API a pain to use. Some sort of `Node_handle` type is definitely worthwhile.
2023-03-27 18:12:20 +02:00
JacksonCampolattaro 353acb57ed Nodes are allocated in an std::vector, and contain a boost::span of children
This reference-based approach breaks when the vector re-allocates. This is a stepping-stone to using indices.
2023-03-27 12:20:57 +02:00