Trait geo::algorithm::haversine_intermediate::HaversineIntermediate [−][src]
pub trait HaversineIntermediate<T: CoordFloat> {
fn haversine_intermediate(&self, other: &Point<T>, f: T) -> Point<T>;
fn haversine_intermediate_fill(
&self,
other: &Point<T>,
max_dist: T,
include_ends: bool
) -> Vec<Point<T>>;
}
Expand description
Returns a new Point along a great circle route between two existing points
Required methods
fn haversine_intermediate(&self, other: &Point<T>, f: T) -> Point<T>
fn haversine_intermediate(&self, other: &Point<T>, f: T) -> Point<T>
Returns a new Point along a great circle route between two existing points.
Examples
use geo::algorithm::haversine_intermediate::HaversineIntermediate;
use geo::Point;
let p1 = Point::<f64>::new(10.0, 20.0);
let p2 = Point::<f64>::new(125.0, 25.0);
let i20 = p1.haversine_intermediate(&p2, 0.2);
let i50 = p1.haversine_intermediate(&p2, 0.5);
let i80 = p1.haversine_intermediate(&p2, 0.8);
let i20_should = Point::new(29.8, 29.9);
let i50_should = Point::new(65.8, 37.7);
let i80_should = Point::new(103.5, 33.5);
assert_relative_eq!(i20.x(), i20_should.x(), epsilon = 0.2);
assert_relative_eq!(i20.y(), i20_should.y(), epsilon = 0.2);
assert_relative_eq!(i50.x(), i50_should.x(), epsilon = 0.2);
assert_relative_eq!(i50.y(), i50_should.y(), epsilon = 0.2);
assert_relative_eq!(i80.x(), i80_should.x(), epsilon = 0.2);
assert_relative_eq!(i80.y(), i80_should.y(), epsilon = 0.2);