Dynamic doubly-connected edge list (DCEL) in Rust.
Find a file
Mikolaj Wielgus b2bc444961
All checks were successful
ci/woodpecker/push/check_formatting Pipeline was successful
ci/woodpecker/push/check_licensing Pipeline was successful
ci/woodpecker/push/test/1 Pipeline was successful
ci/woodpecker/push/test/3 Pipeline was successful
ci/woodpecker/tag/check_formatting Pipeline was successful
ci/woodpecker/push/test/2 Pipeline was successful
ci/woodpecker/tag/check_licensing Pipeline was successful
ci/woodpecker/push/test/4 Pipeline was successful
ci/woodpecker/tag/test/1 Pipeline was successful
ci/woodpecker/tag/test/3 Pipeline was successful
ci/woodpecker/tag/test/2 Pipeline was successful
ci/woodpecker/tag/test/4 Pipeline was successful
ci/woodpecker/push/check_test_coverage Pipeline was successful
ci/woodpecker/tag/check_test_coverage Pipeline was successful
Release version 0.6.22
2026-02-14 00:29:10 +01:00
.woodpecker Add doc testing to CI checks 2026-01-29 02:11:16 +01:00
LICENSES Make repository REUSE-compliant 2026-01-17 12:00:25 +01:00
macroquad_viewer s/face_in_front/incident_face/, s/face_behind/opposite_face/ 2026-02-11 17:31:49 +01:00
src Use Ord and BTreeMap instead of Hash and HashMap 2026-02-13 22:37:20 +01:00
.gitignore Initial commit: implement very basic Dcel with polygon insertion 2026-01-06 11:02:09 +01:00
Cargo.toml Release version 0.6.22 2026-02-14 00:29:10 +01:00
README.md Copyedit readme 2026-02-14 00:28:29 +01:00

dcel

Dynamic doubly-connected edge list (DCEL) in Rust.

A DCEL is a topological data structure that represents a partition of a surface into easily and quickly traversable vertices, edges, and faces, while making only minimal assumptions about their shapes. You can freely choose wherever the vertices should have two or more dimensions, or wheverer the edges are line segments or curved arcs.

Mathematically, DCEL is an implementation of ribbon graph: a graph where every edge is actually made of two half-edges directed in opposite (aka. darts) that are also cyclically ordered around every vertex, making it possible to rotate around a vertex by following one of them. This in turn also allows circulation around faces (the regions formed by the arrangement of edges). Because of their properties, these cyclic orderings are sometimes called rotations, together forming a rotation system.

Usage

Adding dependency

First, add dcel as a dependency to your Cargo.toml

[dependencies]
dcel = "0.6"

Documentation

See the documentation for more information about dcel's usage.

Packaging

dcel is published as a crate on the Crates.io registry.

Contributing

We welcome issues and pull requests from anyone to our canonical repository on Codeberg.

Licence

Outbound licence

dcel is dual-licensed as under either of

at your option.

Inbound licence

Unless you expressly state otherwise, any contribution intentionally submitted for inclusion in the work by you will be dual-licensed as described above, without any additional terms or conditions.