Commit Graph

114 Commits

Author SHA1 Message Date
Sébastien Loriot 40a08f1416 add missing license include 2023-09-01 14:52:26 +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 b950c6c494 Add base traits classes with common typedefs for convenience 2023-07-27 13:52:10 +02:00
JacksonCampolattaro 6f31cbddd6 Point traits now share the generic reassign_points method 2023-07-27 10:13:49 +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 dccda38424 Reference type of traversal iterator is a Node_index (and not a reference to one)
This resolves the issue with segfaults during traversal. In some circumstances, the index would go out of scope before being used for access.
2023-07-09 17:51:50 +02:00
JacksonCampolattaro 03cda70191 Replace boost::optional with std::optional 2023-07-09 17:49:12 +02:00
Sébastien Loriot 02e10bf85a add TODO 2023-07-06 09:24:44 +02:00
Sébastien Loriot 4e1dabe0c0 version version of traits for triangle meshes
example currently segfault, to be debugged...
2023-07-03 17:16:10 +02:00
JacksonCampolattaro dc18e1b1db Replace `tree.points(node)` with `tree.data(node)` 2023-06-27 14:58:13 +02:00
JacksonCampolattaro 22e76aac65 Adapt 2D & dD traits for the new system
There's a lot of duplicated code in the traits classes, at the very least `reassign_points` should be shared.
2023-06-26 18:07:17 +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 f2467dea77 Remove unused Node methods 2023-04-25 16:00:24 +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