From 58d4e2868b93daafc6f2e305b40095c804c1b0d1 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 7 Oct 2024 15:57:31 -0700 Subject: [PATCH] fixup: impl Interpolate for CoordFloat, not just f64 This was a copy/paste error from the impl on Geodesic which truly does only support f64 - for Haversine and Rhumb though, we can support any CoordFloat+FromPrimitive --- .../line_measures/metric_spaces/haversine.rs | 16 ++++++---------- .../line_measures/metric_spaces/rhumb.rs | 16 ++++++---------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/geo/src/algorithm/line_measures/metric_spaces/haversine.rs b/geo/src/algorithm/line_measures/metric_spaces/haversine.rs index e394e89422..50186a2a5c 100644 --- a/geo/src/algorithm/line_measures/metric_spaces/haversine.rs +++ b/geo/src/algorithm/line_measures/metric_spaces/haversine.rs @@ -126,7 +126,7 @@ impl Distance, Point> for Haversin /// Interpolate Point(s) along a [great circle]. /// /// [great circle]: https://en.wikipedia.org/wiki/Great_circle -impl InterpolatePoint for Haversine { +impl InterpolatePoint for Haversine { /// Returns a new Point along a [great circle] between two existing points. /// /// # Examples @@ -150,11 +150,7 @@ impl InterpolatePoint for Haversine { /// ``` /// /// [great circle]: https://en.wikipedia.org/wiki/Great_circle - fn point_at_ratio_between( - start: Point, - end: Point, - ratio_from_start: f64, - ) -> Point { + fn point_at_ratio_between(start: Point, end: Point, ratio_from_start: F) -> Point { crate::algorithm::HaversineIntermediate::haversine_intermediate( &start, &end, @@ -173,11 +169,11 @@ impl InterpolatePoint for Haversine { /// [great circle]: https://en.wikipedia.org/wiki/Great_circle /// [haversine formula]: https://en.wikipedia.org/wiki/Haversine_formula fn points_along_line( - start: Point, - end: Point, - max_distance: f64, + start: Point, + end: Point, + max_distance: F, include_ends: bool, - ) -> impl Iterator> { + ) -> impl Iterator> { crate::algorithm::HaversineIntermediate::haversine_intermediate_fill( &start, &end, diff --git a/geo/src/algorithm/line_measures/metric_spaces/rhumb.rs b/geo/src/algorithm/line_measures/metric_spaces/rhumb.rs index 5f654c3d7b..a674a376bd 100644 --- a/geo/src/algorithm/line_measures/metric_spaces/rhumb.rs +++ b/geo/src/algorithm/line_measures/metric_spaces/rhumb.rs @@ -117,7 +117,7 @@ impl Distance, Point> for Rhumb { /// Interpolate Point(s) along a [rhumb line]. /// /// [rhumb line]: https://en.wikipedia.org/wiki/Rhumb_line -impl InterpolatePoint for Rhumb { +impl InterpolatePoint for Rhumb { /// Returns a new Point along a [rhumb line] between two existing points. /// /// # Examples @@ -141,11 +141,7 @@ impl InterpolatePoint for Rhumb { /// ``` /// /// [rhumb line]: https://en.wikipedia.org/wiki/Rhumb_line - fn point_at_ratio_between( - start: Point, - end: Point, - ratio_from_start: f64, - ) -> Point { + fn point_at_ratio_between(start: Point, end: Point, ratio_from_start: F) -> Point { crate::algorithm::RhumbIntermediate::rhumb_intermediate(&start, &end, ratio_from_start) } @@ -159,11 +155,11 @@ impl InterpolatePoint for Rhumb { /// /// [rhumb line]: https://en.wikipedia.org/wiki/Rhumb_line fn points_along_line( - start: Point, - end: Point, - max_distance: f64, + start: Point, + end: Point, + max_distance: F, include_ends: bool, - ) -> impl Iterator> { + ) -> impl Iterator> { crate::algorithm::RhumbIntermediate::rhumb_intermediate_fill( &start, &end,