space 0.7.2

A library for working with spatial trees and point clouds
docs.rs failed to build space-0.7.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: space-0.18.0

space

Crates.io MIT/Apache docs.rs LoC

A library that attempts to create good abstractions and implementations for common spatial data structures.

What it currently has

  • Morton encoding (z-order encoding) of 3d coordinates into and from u64 and u128
  • Octrees
    • Iteration
    • Gathering data from leaf nodes for internal nodes
      • Uses linear hashed octree LRU cache to speed up gathering.
      • Random sampling approach to gathering supported (e.g., run a barnes hut simulation, but limit a box's samples)
    • Performing a tree fold from the leaves to the root of the tree
    • Pointer based octrees
    • Linear hashed octrees

What it should have

  • Querying what is in a region (for colision detection)
    • This can be implemented in an abstract way using the explore parameter to gather operations, but convenience wrappers need to be created to search over regions (possibly using combinator functions).
  • k-d trees
  • R trees
  • R* trees
  • M trees

What it shouldn't have

  • Specific file format loading
  • Physics (though it should provide enough abstractions to implement physics outside the library)

When will space be 1.0

space will have a stable API once const generics land in Rust stable and each one of the trees supports concrete constant and dynamic dimensional data. nalgebra currently supports this kind of functionality via type-level integers. Since const generics are not far off being stabilized, space will simply wait for them to merge before being stabilized. In the meantime, the primary focus is on 3d trees specifically, but this is not the final destination of the API.

Contributing

  • I would love contributions to get this library to where it needs to be to support the point cloud, game, and physics developers in the community.
  • We need more benchmarks currently, and various levels of n-body simulation would probably be a good benchmark.
  • Also, see the above section What should it have.