Skip to main content

geometry_algorithm/
lib.rs

1//! Free-function algorithm entry points users actually call.
2//!
3//! Each function mirrors the matching free function in
4//! `boost/geometry/algorithms/`. Strategy-driven algorithms expose a
5//! strategy-less default plus a `_with` explicit-strategy companion. Algorithms
6//! that require the overlay engine live in `geometry-overlay` to preserve the
7//! workspace's one-way dependency graph.
8//!
9//! # References
10//!
11//! * `boost/geometry/algorithms/`
12//! * `boost/geometry/algorithms/detail/`
13
14#![cfg_attr(not(feature = "std"), no_std)]
15#![forbid(unsafe_code)]
16
17extern crate alloc;
18
19pub mod append;
20pub mod area;
21pub mod assign;
22pub mod azimuth;
23pub mod centroid;
24pub mod chaikin_smoothing;
25pub mod clear;
26pub mod closest_points;
27pub mod concave_hull;
28pub mod convert;
29pub mod convex_hull;
30pub mod coordinate_position;
31pub mod correct;
32pub mod densify;
33pub mod destination;
34pub mod discrete_frechet;
35pub mod discrete_hausdorff;
36pub mod disjoint;
37pub mod distance;
38pub mod envelope;
39pub mod equals;
40pub mod expand;
41pub mod for_each;
42pub mod intersects;
43pub mod is_convex;
44pub mod is_empty;
45pub mod is_simple;
46pub mod length;
47pub mod line_interpolate;
48pub mod line_locate_point;
49pub mod linestring_segmentize;
50pub mod make;
51pub mod map_coords;
52pub mod minimum_rotated_rect;
53pub mod monotone_subdivision;
54pub mod num_geometries;
55pub mod num_interior_rings;
56pub mod num_points;
57pub mod num_segments;
58pub mod remove_spikes;
59pub mod reverse;
60pub mod rhumb;
61pub mod simplify;
62pub mod transform;
63pub mod triangulate_earcut;
64pub mod unique;
65pub mod within;
66
67mod dyn_area;
68mod dyn_distance;
69mod dyn_envelope;
70mod dyn_error;
71mod dyn_length;
72mod dyn_within;
73
74// feature-group: Mutation & assembly
75// feature-desc: Build up or normalise a geometry in place
76pub use append::{append, append_to_ring};
77// feature-group: Measures
78// feature-desc: Scalar quantities of a geometry
79pub use area::{area, area_with, box_area, multi_polygon_area, ring_area};
80// feature-group: Mutation & assembly
81pub use assign::assign_values;
82// feature-group: Measures
83pub use azimuth::{azimuth, azimuth_with};
84// feature-group: Measures
85pub use centroid::{centroid, centroid_with};
86// feature-group: Construction & transformation
87// feature-desc: Derive a new geometry from an existing one
88pub use chaikin_smoothing::{ChaikinSmoothing, chaikin_smoothing};
89// feature-group: Mutation & assembly
90pub use clear::clear;
91// feature-group: Measures
92pub use closest_points::{closest_points, closest_points_with};
93// feature-group: Construction & transformation
94pub use concave_hull::{
95    ConcaveHullParams, concave_hull, concave_hull_with, k_nearest_concave_hull,
96};
97// feature-group: Mutation & assembly
98pub use convert::convert;
99// feature-group: Construction & transformation
100pub use convex_hull::convex_hull;
101// feature-group: Spatial predicates
102// feature-desc: Boolean relationships between geometries
103pub use coordinate_position::{CoordinatePosition, coordinate_position};
104// feature-group: Mutation & assembly
105pub use correct::{correct, correct_closure};
106// feature-group: Construction & transformation
107pub use densify::densify;
108// feature-group: Construction & transformation
109pub use destination::{destination, destination_with};
110// feature-group: Measures
111pub use discrete_frechet::{discrete_frechet_distance, discrete_frechet_distance_with};
112// feature-group: Measures
113pub use discrete_hausdorff::{discrete_hausdorff_distance, discrete_hausdorff_distance_with};
114// feature-group: Spatial predicates
115pub use disjoint::{disjoint, disjoint_box_box};
116// feature-group: Measures
117pub use distance::{comparable_distance, comparable_distance_with, distance, distance_with};
118// feature-group: Construction & transformation
119pub use envelope::envelope;
120// feature-group: Spatial predicates
121pub use equals::equals;
122// feature-group: Construction & transformation
123pub use expand::{expand, expand_with};
124// feature-group: Inspection
125// feature-desc: Query a geometry's shape or membership
126pub use for_each::{for_each_point, for_each_segment};
127// feature-group: Spatial predicates
128pub use intersects::{intersects, intersects_reversed};
129// feature-group: Inspection
130pub use is_convex::is_convex;
131// feature-group: Inspection
132pub use is_empty::is_empty;
133// feature-group: Inspection
134pub use is_simple::is_simple;
135// feature-group: Measures
136pub use length::{
137    length, length_with, perimeter, perimeter_with, ring_perimeter, ring_perimeter_with,
138};
139// feature-group: Construction & transformation
140pub use line_interpolate::line_interpolate;
141// feature-group: Construction & transformation
142pub use line_locate_point::line_locate_point;
143// feature-group: Construction & transformation
144pub use linestring_segmentize::{linestring_segmentize, linestring_segmentize_with};
145// feature-group: Mutation & assembly
146pub use make::{make_box, make_point, make_segment};
147// feature-group: Construction & transformation
148pub use map_coords::{MapCoords, MapCoordsInPlace, map_coords, map_coords_in_place};
149// feature-group: Construction & transformation
150pub use minimum_rotated_rect::minimum_rotated_rect;
151// feature-group: Construction & transformation
152pub use monotone_subdivision::monotone_subdivision;
153// feature-group: Inspection
154pub use num_geometries::num_geometries;
155// feature-group: Inspection
156pub use num_interior_rings::num_interior_rings;
157// feature-group: Inspection
158pub use num_points::num_points;
159// feature-group: Inspection
160pub use num_segments::num_segments;
161// feature-group: Mutation & assembly
162pub use remove_spikes::remove_spikes;
163// feature-group: Mutation & assembly
164pub use reverse::reverse;
165// feature-group: Construction & transformation
166pub use rhumb::{
167    rhumb_azimuth, rhumb_azimuth_with, rhumb_destination, rhumb_destination_with, rhumb_distance,
168    rhumb_distance_with, rhumb_length, rhumb_length_with,
169};
170// feature-group: Construction & transformation
171pub use simplify::{simplify, simplify_with};
172// feature-group: Construction & transformation
173pub use transform::transform;
174// feature-group: Construction & transformation
175pub use triangulate_earcut::triangulate_earcut;
176// feature-group: Mutation & assembly
177pub use unique::unique;
178// feature-group: Spatial predicates
179pub use within::{covered_by, within};
180
181// feature-group: Measures
182pub use dyn_area::area_dyn;
183// feature-group: Measures
184pub use dyn_distance::distance_dyn;
185// feature-group: Construction & transformation
186pub use dyn_envelope::envelope_dyn;
187pub use dyn_error::DynKindMismatch;
188// feature-group: Measures
189pub use dyn_length::length_dyn;
190// feature-group: Spatial predicates
191pub use dyn_within::within_dyn;