Struct geo::Coordinate[][src]

pub struct Coordinate<T> where
    T: CoordNum
{ pub x: T, pub y: T, }

A lightweight struct used to store coordinates on the 2-dimensional Cartesian plane.

Unlike Point (which in the future may contain additional information such as an envelope, a precision model, and spatial reference system information), a Coordinate only contains ordinate values and accessor methods.

This type implements the vector space operations: Add, Sub, Neg, Zero, Mul<T>, and Div<T> traits.

Semantics

This type does not represent any geospatial primitive, but is used in their definitions. The only requirement is that the coordinates it contains are valid numbers (for eg. not f64::NAN).

Fields

x: Ty: T

Implementations

impl<T> Coordinate<T> where
    T: CoordNum
[src]

pub fn x_y(&self) -> (T, T)[src]

Returns a tuple that contains the x/horizontal & y/vertical component of the coordinate.

Examples

use geo_types::Coordinate;

let c = Coordinate {
    x: 40.02f64,
    y: 116.34,
};
let (x, y) = c.x_y();

assert_eq!(y, 116.34);
assert_eq!(x, 40.02f64);

impl<T> Coordinate<T> where
    T: CoordNum
[src]

Create a coordinate at the origin.

Examples

use geo_types::Coordinate;
use num_traits::Zero;

let p: Coordinate<f64> = Zero::zero();

assert_eq!(p.x, 0.);
assert_eq!(p.y, 0.);

pub fn zero() -> Coordinate<T>[src]

Trait Implementations

impl<T> AbsDiffEq<Coordinate<T>> for Coordinate<T> where
    T: CoordNum + AbsDiffEq<T>,
    <T as AbsDiffEq<T>>::Epsilon: Copy
[src]

type Epsilon = <T as AbsDiffEq<T>>::Epsilon

Used for specifying relative comparisons.

impl<T> Add<Coordinate<T>> for Coordinate<T> where
    T: CoordNum
[src]

Add two coordinates.

Examples

use geo_types::Coordinate;

let p: Coordinate<_> = (1.25, 2.5).into();
let q: Coordinate<_> = (1.5, 2.5).into();
let sum = p + q;

assert_eq!(sum.x, 2.75);
assert_eq!(sum.y, 5.0);

type Output = Coordinate<T>

The resulting type after applying the + operator.

impl<T> Clone for Coordinate<T> where
    T: Clone + CoordNum
[src]

impl<T> Contains<Coordinate<T>> for Geometry<T> where
    T: GeoNum
[src]

impl<T> Contains<Coordinate<T>> for GeometryCollection<T> where
    T: GeoNum
[src]

impl<T> Contains<Coordinate<T>> for Line<T> where
    T: GeoNum
[src]

impl<T> Contains<Coordinate<T>> for LineString<T> where
    T: GeoNum
[src]

impl<T> Contains<Coordinate<T>> for Point<T> where
    T: CoordNum
[src]

impl<T> Contains<Coordinate<T>> for Polygon<T> where
    T: GeoNum
[src]

impl<T> Contains<Coordinate<T>> for MultiPolygon<T> where
    T: GeoNum
[src]

impl<T> Contains<Coordinate<T>> for Rect<T> where
    T: CoordNum
[src]

impl<T> Contains<Coordinate<T>> for Triangle<T> where
    T: GeoNum
[src]

impl<T> CoordinatePosition for Coordinate<T> where
    T: GeoNum
[src]

type Scalar = T

impl<T> Copy for Coordinate<T> where
    T: Copy + CoordNum
[src]

impl<T> Debug for Coordinate<T> where
    T: Debug + CoordNum
[src]

impl<T> Default for Coordinate<T> where
    T: Default + CoordNum
[src]

impl<T> Div<T> for Coordinate<T> where
    T: CoordNum
[src]

Divide coordinate wise by a scalar.

Examples

use geo_types::Coordinate;

let p: Coordinate<_> = (5., 10.).into();
let q: Coordinate<_> = p / 4.;

assert_eq!(q.x, 1.25);
assert_eq!(q.y, 2.5);

type Output = Coordinate<T>

The resulting type after applying the / operator.

impl<T> Eq for Coordinate<T> where
    T: Eq + CoordNum
[src]

impl<T> EuclideanDistance<T, Coordinate<T>> for Coordinate<T> where
    T: GeoFloat
[src]

fn euclidean_distance(&self, c: &Coordinate<T>) -> T[src]

Minimum distance between two Coordinates

impl<T> EuclideanDistance<T, Coordinate<T>> for Line<T> where
    T: GeoFloat
[src]

fn euclidean_distance(&self, coord: &Coordinate<T>) -> T[src]

Minimum distance from a Line to a Coordinate

impl<T> EuclideanDistance<T, Line<T>> for Coordinate<T> where
    T: GeoFloat
[src]

fn euclidean_distance(&self, line: &Line<T>) -> T[src]

Minimum distance from a Coordinate to a Line

impl<T> From<[T; 2]> for Coordinate<T> where
    T: CoordNum
[src]

impl<T> From<(T, T)> for Coordinate<T> where
    T: CoordNum
[src]

impl<T> From<Coordinate<T>> for Point<T> where
    T: CoordNum
[src]

impl<T> From<Point<T>> for Coordinate<T> where
    T: CoordNum
[src]

impl<T> Hash for Coordinate<T> where
    T: Hash + CoordNum
[src]

impl<T> Intersects<Coordinate<T>> for Coordinate<T> where
    T: CoordNum
[src]

impl<T> Intersects<Coordinate<T>> for Line<T> where
    T: GeoNum
[src]

impl<T> Intersects<Coordinate<T>> for Polygon<T> where
    T: GeoNum
[src]

impl<T> Intersects<Coordinate<T>> for Rect<T> where
    T: CoordNum
[src]

impl<T> Intersects<Geometry<T>> for Coordinate<T> where
    Geometry<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<GeometryCollection<T>> for Coordinate<T> where
    GeometryCollection<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<Line<T>> for Coordinate<T> where
    Line<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<LineString<T>> for Coordinate<T> where
    LineString<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<MultiPoint<T>> for Coordinate<T> where
    MultiPoint<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<Point<T>> for Coordinate<T> where
    T: CoordNum
[src]

impl<T> Intersects<Polygon<T>> for Coordinate<T> where
    Polygon<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<Rect<T>> for Coordinate<T> where
    Rect<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Intersects<Triangle<T>> for Coordinate<T> where
    Triangle<T>: Intersects<Coordinate<T>>,
    T: CoordNum
[src]

impl<T> Mul<T> for Coordinate<T> where
    T: CoordNum
[src]

Multiply coordinate wise by a scalar.

Examples

use geo_types::Coordinate;

let p: Coordinate<_> = (1.25, 2.5).into();
let q: Coordinate<_> = p * 4.;

assert_eq!(q.x, 5.0);
assert_eq!(q.y, 10.0);

type Output = Coordinate<T>

The resulting type after applying the * operator.

impl<T> Neg for Coordinate<T> where
    T: CoordNum + Neg<Output = T>, 
[src]

Negate a coordinate.

Examples

use geo_types::Coordinate;

let p: Coordinate<_> = (1.25, 2.5).into();
let q = -p;

assert_eq!(q.x, -p.x);
assert_eq!(q.y, -p.y);

type Output = Coordinate<T>

The resulting type after applying the - operator.

impl<T> PartialEq<Coordinate<T>> for Coordinate<T> where
    T: PartialEq<T> + CoordNum
[src]

impl<T> Point for Coordinate<T> where
    T: Float + RTreeNum
[src]

type Scalar = T

The number type used by this point type.

impl<T> RelativeEq<Coordinate<T>> for Coordinate<T> where
    T: CoordNum + RelativeEq<T>,
    <T as AbsDiffEq<T>>::Epsilon: Copy
[src]

impl<T> StructuralEq for Coordinate<T> where
    T: CoordNum
[src]

impl<T> StructuralPartialEq for Coordinate<T> where
    T: CoordNum
[src]

impl<T> Sub<Coordinate<T>> for Coordinate<T> where
    T: CoordNum
[src]

Subtract a coordinate from another.

Examples

use geo_types::Coordinate;

let p: Coordinate<_> = (1.5, 2.5).into();
let q: Coordinate<_> = (1.25, 2.5).into();
let diff = p - q;

assert_eq!(diff.x, 0.25);
assert_eq!(diff.y, 0.);

type Output = Coordinate<T>

The resulting type after applying the - operator.

impl<T> UlpsEq<Coordinate<T>> for Coordinate<T> where
    T: CoordNum + UlpsEq<T>,
    <T as AbsDiffEq<T>>::Epsilon: Copy
[src]

impl<T> Zero for Coordinate<T> where
    T: CoordNum
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for Coordinate<T> where
    T: RefUnwindSafe

impl<T> Send for Coordinate<T> where
    T: Send

impl<T> Sync for Coordinate<T> where
    T: Sync

impl<T> Unpin for Coordinate<T> where
    T: Unpin

impl<T> UnwindSafe for Coordinate<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<P> PointDistance for P where
    P: Point
[src]

impl<P> RTreeObject for P where
    P: Point
[src]

type Envelope = AABB<P>

The object’s envelope type. Usually, AABB will be the right choice. This type also defines the objects dimensionality. Read more

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.