Expand description
§Contour-able
contourable is a Rust crate that provides traits and implementations for working with contours.
It allows you to define contours and calculate positions on them based on input values.
§Usage
To use this crate, you need to implement the Contour trait for your contour type. The trait requires you to define the position method, which calculates the position on the contour for a given input value. Additionally, the trait provides a default implementation for the divide method, which divides the contour into a specified number of points between the start and end values.
§Example
use nalgebra as na;
use contourable::Contour;
struct Circle {
radius: f64,
}
impl Contour<f64,f64> for Circle {
fn position(&self, lap: &f64) -> na::Point2<f64> {
let angle = lap * 2.0 * std::f64::consts::PI;
let x = self.radius * angle.cos();
let y = self.radius * angle.sin();
na::Point2::new(x, y)
}
fn s_interval(&self) -> (f64, f64) {
(0.0, 1.0)
}
}
let circle = Circle { radius: 2.0 };
let points = circle.divide(0.0, 1.0, 5);
for point in points {
println!("Point: ({}, {})", point.x, point.y);
}§Testing
The crate includes tests for both f64 and DualVec64 types to ensure the correctness of the Contour trait implementation. The tests cover the position and divide methods for a Circle contour.
Modules§
- chain
- This module contains the implementation of the chain contour.
- closed
- This module contains the implementation of the closed contour.
- line
- mixed_
chain - This module contains the implementation of the mixed chain contour.
Structs§
- Aabb
- A structure representing an axis-aligned bounding box (AABB) in 2D space.
Traits§
- Contour
- A trait representing a contour that can provide a position based on a given input.