wrapping_coords2d

Crates.iowrapping_coords2d
lib.rswrapping_coords2d
version0.1.10
sourcesrc
created_at2020-02-15 22:21:02.059234
updated_at2022-05-07 19:56:05.889644
descriptionTranslate between 1D indices and 2D coordinates with wrapping
homepage
repositoryhttps://github.com/facorread/WrappingCoords2d
max_upload_size
id209581
size69,273
Fabio A. Correa (facorread)

documentation

README

wrapping_coords2d

Rust crate to translate between 1D indices and 2D coordinates with wrapping.

Crate Downloads Documentation License

Copyright © 2020-2022 Fabio A. Correa Duran facorread@gmail.com

Use WrappingCoords2d to store data from a 2D grid into a 1D container such as std::vec::Vec. Both x and y coordinates wrap around the limits of the grid. WrappingCoords2d is not a container; it is just a tool to manipulate indices. For a 2D container, see array2d. For coordinate translation without wrapping, see ameda.

WrappingCoords2d is useful to design cellular automata, agent-based models, and game worlds in 2D and 3D. You can use WrappingCoords2d as part of an Entity-Component-System (ECS) software architecture for high-performing models and flexible games. See my ABM project for an example.

See more examples in the documentation for the wrapping_coords2d crate.

FAQ

Why not create iterators to the neighbors of a cell?

Indices make more sense than iterators in an ECS design. It's generally more idiomatic to use a for loop with indices than iterator chains. If a game world or a model landscape has several components, such as color, depth, and fertility, it makes sense to keep each component in its own vector. The simplest approach is to use indices on them. However, I am open to a pull request contributing code for iterators into neighbors.

Does this crate use the unsafe keyword?

No.

Commit count: 41

cargo fmt