Skip to content

Commit a513ac3

Browse files
authored
Merge pull request #1232 from georust/mkirk/deprecate-euclidean-distance
deprecate EuclideanDistance
2 parents cf37789 + 0e9c0a4 commit a513ac3

File tree

15 files changed

+1224
-242
lines changed

15 files changed

+1224
-242
lines changed

geo/CHANGES.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,31 @@
2222
* Unify various line measurements under new `line_measures::{Bearing, Distance, Destination, InterpolatePoint}` traits
2323
Before:
2424
```
25-
use geo::{GeodesicBearing, HaversineBearing, GeodesicDistance, HaversineDistance};
26-
GeodesicBearing::geodesic_bearing(p1, p2)
27-
HaversineBearing::haversine_bearing(p1, p2)
28-
GeodesicDistance::geodesic_distance(p1, p2)
29-
HaversineDistance::haversine_distance(p1, p2)
25+
use geo::{GeodesicBearing, HaversineBearing, GeodesicDistance, HaversineDistance, EuclideanDistance};
26+
p1.geodesic_bearing(p2)
27+
p1.haversine_bearing(p2)
28+
p1.geodesic_distance(p2)
29+
p1.haversine_distance(p2)
30+
p1.euclidean_distance(p2)
3031
```
3132

3233
After:
3334
```
34-
use geo::{Geodesic, Haversine, Bearing, Distance};
35+
use geo::{Geodesic, Haversine, Euclidean, Bearing, Distance};
3536
Geodesic::bearing(p1, p2)
3637
Haversine::bearing(p1, p2)
3738
Geodesic::distance(p1, p2)
3839
Haversine::distance(p1, p2)
40+
Euclidean::distance(p1, p2)
3941
```
4042
* <https://github.com/georust/geo/pull/1216>
4143
* Deprecated legacy line measure traits in favor of those added in the previous changelog entry:
4244
* `GeodesicBearing`, `GeodesicDistance`, `GeodesicDestination`, `GeodesicIntermediate`
4345
* `RhumbBearing`, `RhumbDistance`, `RhumbDestination`, `RhumbIntermediate`
4446
* `HaversineBearing`, `HaversineDistance`, `HaversineDestination`, `HaversineIntermediate`
47+
* `EuclideanDistance`
4548
* <https://github.com/georust/geo/pull/1222>
49+
* <https://github.com/georust/geo/pull/1232>
4650
* Deprecated `HaversineLength`, `EuclideanLength`, `RhumbLength`, `GeodesicLength` in favor of new generic `Length` trait.
4751
```
4852
// Before
@@ -77,6 +81,8 @@
7781
* <https://github.com/georust/geo/pull/1226>
7882
* Enable i128 geometry types
7983
* <https://github.com/georust/geo/pull/1230>
84+
85+
8086
## 0.28.0
8187

8288
* BREAKING: The `HasKernel` trait was removed and it's functionality was merged

geo/benches/euclidean_distance.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use criterion::{criterion_group, criterion_main};
2-
use geo::algorithm::{ConvexHull, EuclideanDistance};
2+
use geo::algorithm::{ConvexHull, Distance, Euclidean};
33
use geo::{polygon, Polygon};
44

55
fn criterion_benchmark(c: &mut criterion::Criterion) {
@@ -37,9 +37,7 @@ fn criterion_benchmark(c: &mut criterion::Criterion) {
3737
(x: -6.064453, y: 68.49604),
3838
];
3939
bencher.iter(|| {
40-
criterion::black_box(
41-
criterion::black_box(&poly1).euclidean_distance(criterion::black_box(&poly2)),
42-
);
40+
criterion::black_box(Euclidean::distance(&poly1, &poly2));
4341
});
4442
});
4543

@@ -81,9 +79,7 @@ fn criterion_benchmark(c: &mut criterion::Criterion) {
8179
]
8280
.convex_hull();
8381
bencher.iter(|| {
84-
criterion::black_box(
85-
criterion::black_box(&poly1).euclidean_distance(criterion::black_box(&poly2)),
86-
);
82+
criterion::black_box(Euclidean::distance(&poly1, &poly2));
8783
});
8884
},
8985
);

geo/src/algorithm/concave_hull.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::convex_hull::qhull;
22
use crate::utils::partial_min;
33
use crate::{
4-
coord, Centroid, Coord, CoordNum, Euclidean, EuclideanDistance, GeoFloat, Length, Line,
5-
LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon,
4+
coord, Centroid, Coord, CoordNum, Distance, Euclidean, GeoFloat, Length, Line, LineString,
5+
MultiLineString, MultiPoint, MultiPolygon, Point, Polygon,
66
};
77
use rstar::{RTree, RTreeNum};
88
use std::collections::VecDeque;
@@ -134,8 +134,8 @@ where
134134
let closest_point =
135135
candidates.fold(Point::new(point.x, point.y), |acc_point, candidate| {
136136
let candidate_point = Point::new(candidate.x, candidate.y);
137-
if line.euclidean_distance(&acc_point)
138-
> line.euclidean_distance(&candidate_point)
137+
if Euclidean::distance(&line, &acc_point)
138+
> Euclidean::distance(&line, &candidate_point)
139139
{
140140
candidate_point
141141
} else {
@@ -154,8 +154,8 @@ where
154154
let closest_edge_option = match peeked_edge {
155155
None => None,
156156
Some(&edge) => Some(edges_nearby_point.fold(*edge, |acc, candidate| {
157-
if closest_point.euclidean_distance(&acc)
158-
> closest_point.euclidean_distance(candidate)
157+
if Euclidean::distance(&closest_point, &acc)
158+
> Euclidean::distance(&closest_point, candidate)
159159
{
160160
*candidate
161161
} else {
@@ -164,8 +164,8 @@ where
164164
})),
165165
};
166166
let decision_distance = partial_min(
167-
closest_point.euclidean_distance(&line.start_point()),
168-
closest_point.euclidean_distance(&line.end_point()),
167+
Euclidean::distance(&closest_point, &line.start_point()),
168+
Euclidean::distance(&closest_point, &line.end_point()),
169169
);
170170
if let Some(closest_edge) = closest_edge_option {
171171
let far_enough = edge_length / decision_distance > concavity;

0 commit comments

Comments
 (0)