descartes icon indicating copy to clipboard operation
descartes copied to clipboard

Imprecision-tolerant computational geometry for Rust

descartes

descartes is a...

  • [X] Error-tolerant 2D geometry engine
  • [X] that allows for arbitrary error tolerances
  • [X] dealing with both floating-point inaccuracies and much larger user input inaccuracies

With the following primitives:

  • [X] line
  • [X] circle
  • [X] line/circle segment

And the following compound objects:

  • [X] Path (continuous concatenation of line/circle segments)
  • [ ] Shape (Path outline with 0..n Path holes)
  • [X] Band (a path with a thickness)

It offers...

  • [ ] Reexported 2D & 3D Point/Vector operations from nalgebra
  • [X] Projections from and onto lines, circles, segments, paths, bands
  • [X] Intersections
    • [X] between lines & circles
    • [X] between line/circle segments
    • [X] between paths
  • [X] Axis-aligned bounding boxes for
    • [X] line/circle segments
    • [X] paths
  • [ ] Boolean operations between shapes
  • [X] Orthogonal offsets of segments
  • [ ] True Orthogonal offsets of paths (without producing self-intersections)
  • [X] A RoughEq Trait for comparing things within a tolerance, with implementations for P2, P3 and V2, P3

It internally uses...

  • [X] "Thick" primitives for tolerances

descartes is named after René Descartes, the father of analytical geometry.