| Crates.io | concentric_circles |
| lib.rs | concentric_circles |
| version | 0.1.0 |
| created_at | 2025-06-01 16:34:59.497234+00 |
| updated_at | 2025-06-01 16:34:59.497234+00 |
| description | Efficient generation and iteration of concentric circle perimeters using Bresenham's algorithm. |
| homepage | https://github.com/pic16f877ccs/concentric_circles |
| repository | https://github.com/pic16f877ccs/concentric_circles |
| max_upload_size | |
| id | 1697301 |
| size | 111,354 |
A Rust crate for generating points on concentric circles.
concentric_circles provides iterators and adapters for generating coordinates of points distributed along multiple concentric circles. It is designed to be lightweight, efficient, and compatible with no_std environments.
Below are images demonstrating how ConcentricCircles renders. These were generated by example programs in the examples folder.
Run them with cargo run --example example_name.
no_std support (no dependency on the Rust standard library)Add this to your Cargo.toml:
[dependencies]
concentric_circles = "0.1"
use concentric_circles::{ConcentricCirclesAdapters, ConcentricCircles, ScalingU32};
use concentric_circles::sum_circles_points;
let inner_radius = 100;
let outer_radius = 500;
let x_offset = outer_radius as i32;
let y_offset = outer_radius as i32;
let circles_points = sum_circles_points(inner_radius, outer_radius).unwrap();
let mut scaling_iter = ScalingU32::new(circles_points as u32);
let mut value = 0;
let iterator = ConcentricCircles::new(inner_radius, outer_radius)
.to_image_coordinates(x_offset, y_offset)
.map(|(x, y)| {
value = scaling_iter.next().unwrap();
(x, y, [255 - value, 255 - value, 255 - value, 255])
});