TOGO - Basic 2D geometric operations
This library provides 2D geometric operations for arcs and line segments. It is used in my other projects and may not implement all possible geometric operations.
Adding the library to Cargo.toml
[]
= "0.6"


Documentation
Core Capabilities
2D Geometric Primitives: Points, Line Segments, Circles, Circle Arcs, Polylines, Intervals
Distance Calculations: point-arc, point-circle, point-segment, segment-arc, segment-circle, segment-segment, line-circle, arc-arc
Intersection Detection: line-line, line-circle, line-arc, circle-circle, segment-segment, segment-circle, segment-arc, arc-arc, interval-interval
Geometric Algorithms: Convex Hull, Convexity Detection, Area Calculations (point/arc-based), Bounding Circle/Rectangle
Numerical Operations: Vector arithmetic (add, sub, mul, div), dot/cross product, normalization, point equality (ULP & epsilon-based)
Examples
[!IMPORTANT] Arcs are always CCW (counter-clockwise) in this library.
Working with geometric primitives and distances
use *;
// Create primitives: points, circle, segment, arc
let p1 = point;
let p2 = point;
let c = circle;
let seg = segment;
let arc = arc;
// Compute distances
let = dist_point_circle;
assert_eq!;
let = dist_point_segment;
assert_eq!;
// Distance between arcs
let a2 = arc;
let dist = dist_arc_arc;
assert!;
Intersection computations
use *;
// Segment-segment intersection
let seg1 = segment;
let seg2 = segment;
match int_segment_segment
// Circle-circle intersection
let c1 = circle;
let c2 = circle;
match int_circle_circle
// Arc-arc intersection
let a1 = arc;
let a2 = arc;
match int_arc_arc
Algorithms: Area, Convex Hull, Bounding
use *;
use ;
// Calculate area of a polygon
let triangle = vec!;
let area = pointline_area;
assert_eq!;
// Find convex hull
let points = vec!;
let hull = pointline_convex_hull;
assert_eq!; // 4 points on convex hull
// Bounding circle for an arc
let quarter_arc = arc;
let bounding = arc_bounding_circle;
assert_eq!; // sqrt(2)/2
Related Projects
Togo is part of the open-sourced Nest2D projects collection.