2 unstable releases
new 0.1.0 | Jan 20, 2025 |
---|---|
0.0.1 | Jul 10, 2024 |
#180 in Math
101 downloads per month
Used in mapping-suites
150KB
2.5K
SLoC
mapping-algorithms
Various computational geometry and spatial algorithms
⚠️ Unstable API ⚠️
Warning: this crate is in early development, breaking API changes are to be expected.
Usage
Add this to your Cargo.toml
:
[dependencies]
mapping-algorithms = { git = "https://github.com/EmilyMatt/mapping-rs.git" }
Features
no_std support
While the std
feature is enabled by default,
this crate was designed with no_std
support in mind,
provided that a memory allocator is configured
(this crate does use the alloc
crate).
It can be easily achieved like so:
[dependencies.mapping-algorithms]
default-features = false
tracing
This crate provides profiling and instrumentation insight via the tracing crate.
To use it, simply enable the tracing
feature in your Cargo.toml,
and use your choice of a subscriber.
Note that different functions have different tracing levels.
Since each and every function is instrumented, be sure to remember the overhead for enabling tracing.
pregenerated
This crate heavily rely on generics, and suffers severe performance penalties in debug
(We strive to be very fast in release
though).
For this purpose, a pregenerated
feature exists, which provides access to public pre-generated functions for most use
cases and types.
This is recommended for most users, and allows bypassing the generics overhead.
Usage:
In your Cargo.toml:
# Enables the pregenerated feature (This is enabled by default)
[dependencies.mapping-algorithms]
features = ["pregenerated"]
# Compiles these crates with max optimizations
[profile.dev.package.mapping-algorithms]
opt-level = 3
Code example:
use mapping_algorithms::point_clouds;
// Instead of doing this:
let res = point_clouds::icp::<f32, 2 > (...); // Uses generics, uses your project's optimization level
// Do this(Runs much faster):
let res = point_clouds::single_precision::icp_2d(...); // Is a regular function, uses the crate's optimization level
The pregenerated
macro is enabled by default.
Contributing
If you would like to contribute, we welcome your contributions. Please be sure to check out our CONTRIBUTING.md
Dependencies
~4.5MB
~86K SLoC