Skip to content

Commit d421459

Browse files
committed
fixup! line interpolate point across metric spaces
1 parent 47b3abb commit d421459

File tree

1 file changed

+36
-16
lines changed

1 file changed

+36
-16
lines changed

geo/src/algorithm/line_measures/interpolate_line.rs

+36-16
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub trait InterpolateLine<F: CoordFloat>: InterpolatePoint<F> + Length<F> + Size
2727
/// assert_relative_eq!(quarter_distance, wkt!(POINT(0. 5.)));
2828
///
2929
/// let quarter_distance = Haversine.point_at_ratio_from_start(&line_string, 0.25).unwrap();
30-
/// assert_relative_eq!(quarter_distance, wkt!(POINT(0. 4.961924877405399)));
30+
/// assert_relative_eq!(quarter_distance, wkt!(POINT(0. 4.961924877405399)), epsilon=1e-14);
3131
/// ```
3232
fn point_at_ratio_from_start<L: InterpolatableLine<F>>(&self, line: &L, ratio: F) -> L::Output {
3333
line.point_at_ratio_from_start(self, ratio)
@@ -53,7 +53,7 @@ pub trait InterpolateLine<F: CoordFloat>: InterpolatePoint<F> + Length<F> + Size
5353
/// assert_relative_eq!(quarter_distance, wkt!(POINT(5. 10.0)));
5454
///
5555
/// let quarter_distance = Haversine.point_at_ratio_from_end(&line_string, 0.25).unwrap();
56-
/// assert_relative_eq!(quarter_distance, wkt!(POINT(4.961333045966285 10.037420806650719)));
56+
/// assert_relative_eq!(quarter_distance, wkt!(POINT(4.961333045966285 10.037420806650719)), epsilon=1e-14);
5757
/// ```
5858
fn point_at_ratio_from_end<L: InterpolatableLine<F>>(&self, line: &L, ratio: F) -> L::Output {
5959
line.point_at_ratio_from_end(self, ratio)
@@ -81,7 +81,7 @@ pub trait InterpolateLine<F: CoordFloat>: InterpolatePoint<F> + Length<F> + Size
8181
///
8282
/// // For Haversine calculations, distance is in meters
8383
/// let near_start = Haversine.point_at_distance_from_start(&line_string, 100_000.0).unwrap();
84-
/// assert_relative_eq!(near_start, wkt!(POINT(0. 0.899320363724538)));
84+
/// assert_relative_eq!(near_start, wkt!(POINT(0. 0.899320363724538)), epsilon=1e-14);
8585
/// ```
8686
fn point_at_distance_from_start<L: InterpolatableLine<F>>(
8787
&self,
@@ -113,7 +113,7 @@ pub trait InterpolateLine<F: CoordFloat>: InterpolatePoint<F> + Length<F> + Size
113113
///
114114
/// // For Haversine calculations, distance is in meters
115115
/// let near_start = Haversine.point_at_distance_from_end(&line_string, 100_000.0).unwrap();
116-
/// assert_relative_eq!(near_start, wkt!(POINT(9.086875463645015 10.012416322308656)));
116+
/// assert_relative_eq!(near_start, wkt!(POINT(9.086875463645015 10.012416322308656)), epsilon=1e-14);
117117
/// ```
118118
fn point_at_distance_from_end<L: InterpolatableLine<F>>(
119119
&self,
@@ -157,7 +157,7 @@ pub trait InterpolatableLine<F: CoordFloat> {
157157
/// assert_relative_eq!(quarter_distance, wkt!(POINT(0. 5.)));
158158
///
159159
/// let quarter_distance = line_string.point_at_ratio_from_start(&Haversine, 0.25).unwrap();
160-
/// assert_relative_eq!(quarter_distance, wkt!(POINT(0. 4.961924877405399)));
160+
/// assert_relative_eq!(quarter_distance, wkt!(POINT(0. 4.961924877405399)), epsilon=1e-14);
161161
/// ```
162162
///
163163
/// [`Euclidean`]: super::Euclidean
@@ -190,7 +190,7 @@ pub trait InterpolatableLine<F: CoordFloat> {
190190
/// assert_relative_eq!(quarter_distance, wkt!(POINT(5. 10.0)));
191191
///
192192
/// let quarter_distance = line_string.point_at_ratio_from_end(&Haversine, 0.25).unwrap();
193-
/// assert_relative_eq!(quarter_distance, wkt!(POINT(4.961333045966285 10.037420806650719)));
193+
/// assert_relative_eq!(quarter_distance, wkt!(POINT(4.961333045966285 10.037420806650719)), epsilon=1e-14);
194194
/// ```
195195
///
196196
/// [`Euclidean`]: super::Euclidean
@@ -225,7 +225,7 @@ pub trait InterpolatableLine<F: CoordFloat> {
225225
///
226226
/// // For Haversine calculations, distance is in meters
227227
/// let near_start = line_string.point_at_distance_from_start(&Haversine, 100_000.0).unwrap();
228-
/// assert_relative_eq!(near_start, wkt!(POINT(0. 0.899320363724538)));
228+
/// assert_relative_eq!(near_start, wkt!(POINT(0. 0.899320363724538)), epsilon=1e-14);
229229
/// ```
230230
///
231231
/// [`Euclidean`]: super::Euclidean
@@ -260,7 +260,7 @@ pub trait InterpolatableLine<F: CoordFloat> {
260260
///
261261
/// // For Haversine calculations, distance is in meters
262262
/// let near_start = line_string.point_at_distance_from_end(&Haversine, 100_000.0).unwrap();
263-
/// assert_relative_eq!(near_start, wkt!(POINT(9.086875463645015 10.012416322308656)));
263+
/// assert_relative_eq!(near_start, wkt!(POINT(9.086875463645015 10.012416322308656)), epsilon=1e-14);
264264
/// ```
265265
///
266266
/// [`Euclidean`]: super::Euclidean
@@ -647,7 +647,11 @@ mod tests {
647647
let quarter_distance = Haversine
648648
.point_at_ratio_from_start(&line_string, 0.25)
649649
.unwrap();
650-
assert_relative_eq!(quarter_distance, wkt!(POINT(0.0 4.961924877405399)));
650+
assert_relative_eq!(
651+
quarter_distance,
652+
wkt!(POINT(0.0 4.961924877405399)),
653+
epsilon = 1e-14
654+
);
651655
}
652656

653657
#[test]
@@ -658,7 +662,8 @@ mod tests {
658662
.unwrap();
659663
assert_relative_eq!(
660664
quarter_distance,
661-
wkt!(POINT(4.961333045966285 10.037420806650719))
665+
wkt!(POINT(4.961333045966285 10.037420806650719)),
666+
epsilon = 1e-14
662667
);
663668
}
664669

@@ -668,7 +673,11 @@ mod tests {
668673
let quarter_distance = Haversine
669674
.point_at_distance_from_start(&line_string, 100_000.)
670675
.unwrap();
671-
assert_relative_eq!(quarter_distance, wkt!(POINT(0.0 0.899320363724538)));
676+
assert_relative_eq!(
677+
quarter_distance,
678+
wkt!(POINT(0.0 0.899320363724538)),
679+
epsilon = 1e-14
680+
);
672681
}
673682

674683
#[test]
@@ -679,7 +688,8 @@ mod tests {
679688
.unwrap();
680689
assert_relative_eq!(
681690
quarter_distance,
682-
wkt!(POINT(9.086875463645015 10.012416322308656))
691+
wkt!(POINT(9.086875463645015 10.012416322308656)),
692+
epsilon = 1e-14
683693
);
684694
}
685695
}
@@ -694,7 +704,11 @@ mod tests {
694704
let quarter_distance = Geodesic
695705
.point_at_ratio_from_start(&line_string, 0.25)
696706
.unwrap();
697-
assert_relative_eq!(quarter_distance, wkt!(POINT(0.0 4.9788949389766595)));
707+
assert_relative_eq!(
708+
quarter_distance,
709+
wkt!(POINT(0.0 4.9788949389766595)),
710+
epsilon = 1e-14
711+
);
698712
}
699713

700714
#[test]
@@ -705,7 +719,8 @@ mod tests {
705719
.unwrap();
706720
assert_relative_eq!(
707721
quarter_distance,
708-
wkt!(POINT(4.97832809547093 10.037667662355751))
722+
wkt!(POINT(4.97832809547093 10.037667662355751)),
723+
epsilon = 1e-14
709724
);
710725
}
711726

@@ -715,7 +730,11 @@ mod tests {
715730
let quarter_distance = Geodesic
716731
.point_at_distance_from_start(&line_string, 100_000.)
717732
.unwrap();
718-
assert_relative_eq!(quarter_distance, wkt!(POINT(0.0 0.9043687229127633)));
733+
assert_relative_eq!(
734+
quarter_distance,
735+
wkt!(POINT(0.0 0.9043687229127633)),
736+
epsilon = 1e-14
737+
);
719738
}
720739

721740
#[test]
@@ -726,7 +745,8 @@ mod tests {
726745
.unwrap();
727746
assert_relative_eq!(
728747
quarter_distance,
729-
wkt!(POINT(9.087988077970042 10.012483990563286))
748+
wkt!(POINT(9.087988077970042 10.012483990563286)),
749+
epsilon = 1e-14
730750
);
731751
}
732752
}

0 commit comments

Comments
 (0)