geo 0.25.1

Geospatial primitives and algorithms
Documentation
# Changes

## 0.25.1

- Add `TriangulateEarcut` algorithm trait to triangulate polygons with the earcut algorithm.
  - <https://github.com/georust/geo/pull/1007>

## 0.25.0

- Added `CrossTrackDistance` trait to calculate the distance from a point
  to the nearest point on a line
  - <https://github.com/georust/geo/pull/961>
- Performance improvements for CoordinatePosition
  - <https://github.com/georust/geo/pull/1004>
- BREAKING: Remove deprecated methods
  - <https://github.com/georust/geo/pull/1012>
  - Instead of `map_coords_inplace` use `map_coords_in_place`
  - Instead of `RotatePoint` use `Rotate`
  - Instead of `Translate#translate_inplace` use `Translate#translate_mut`

## 0.24.1

- Rename Bearing::bearing to HaversineBearing::haversine_bearing to clarify it uses great circle calculations.
  - <https://github.com/georust/geo/pull/999>
- Speed up intersection checks
  - <https://github.com/georust/geo/pull/994>
- FIX: Simplify no longer skips simplifying minimally sized Polygons and LineString
  - <https://github.com/georust/geo/pull/996>

## 0.24.0

- BREAKING: Make `SimplifyVw` naming consistent
  - <https://github.com/georust/geo/pull/957>
- Update the `Polygon` implementation of the `Simplify` algorithm to always return `Polygon`s with at least four coordinates.
  - <https://github.com/georust/geo/pull/943>
- BREAKING: Update to float_next_after-1.0.0
  <https://github.com/georust/geo/pull/952>
- POSSIBLY BREAKING: Minimum supported version of Rust (MSRV) is now 1.63
- BREAKING: Update `rstar` dependency to `0.10.0` and enable `use-rstar_0_10` feature for `geo-types.
  <https://github.com/georust/geo/pull/987>
- Added `MinimumRotatedRect` trait to calculate the MBR of geometry
  <https://github.com/georust/geo/pull/959>
- Added `GeodesicArea` trait to support geodesic area and perimeter calculations from `geographlib-rs`
  <https://github.com/georust/geo/pull/988>
- Added `GeodesicDestination` trait to support geodesic destination calculations
  <https://github.com/georust/geo/pull/991>
- Added `GeodesicBearing` trait to support geodesic bearing calculations
  <https://github.com/georust/geo/pull/991>

## 0.23.1

- Update to geo-types-0.7.8 which deprecated `Coordinate` in favor of `Coord`.
  <https://github.com/georust/geo/pull/924>
- Added doc for Transform trait to root docs index.
- Fixed an issues where calculating the convex hull of 3 collinear points
  would include all 3.
  - <https://github.com/georust/geo/pull/907>
- Added outlier detection algorithm using [LOF]https://en.wikipedia.org/wiki/Local_outlier_factor
  - <https://github.com/georust/geo/pull/904>
- Changed license field to [SPDX 2.1 license expression]https://spdx.dev/spdx-specification-21-web-version/#h.jxpfx0ykyb60
  - <https://github.com/georust/geo/pull/928>
- Added `RemoveRepeatedPoints` trait allowing the removal of (consecutive)
  repeated points.
- Remove polygon-polygon fast path due to ongoing lack of reliability
  - <https://github.com/georust/geo/pull/920>
- Fix RDP recursion bug
  - <https://github.com/georust/geo/pull/941>
- Clarify documentation of bearing on the HaversineDestination

## 0.23.0

- Added `AffineOps`, `Scale`, and `Skew` traits allowing the definition and
  composition of 2-D affine transforms.
  - Related Cleanup:
    - Existing `Rotate` and `Translate` traits leverage this new `AffineOps`
      trait.
    - Moved `RotatePoint::rotate_around_point` method onto
    - `Rotate::rotate_around_point` and removed `RotatePoint` trait.
    - Removed deprecated `Rotate::rotate` method, use
      `Rotate::rotate_around_center` or `Rotate::roate_around_centroid`
      instead.
    - Deprecated `Translate::translate_in_place` in favor of
      `Translate::translate_mut` to line up with naming elsewhere in the crate.
  - Implemented across several PR's:
    - <https://github.com/georust/geo/pull/866>
    - <https://github.com/georust/geo/pull/871>
    - <https://github.com/georust/geo/pull/872>
- Added `BooleanOps::clip` to clip a 1-D geometry with a 2-D geometry.
  - <https://github.com/georust/geo/pull/886>
- Added `InteriorPoint` trait to calculate a representative point inside a
  `Geometry`.
  - <https://github.com/georust/geo/pull/870>
- Added `Within` trait to determine if one Geometry is completely within
  another.
  - <https://github.com/georust/geo/pull/884>
- Added `ConvexHull` implementation for all remaining geometries.
  - <https://github.com/georust/geo/pull/889>
- Added `Contains` implementation for all remaining geometries.
  - <https://github.com/georust/geo/pull/880>
- Removed deprecated `ToGeo` trait. Use `std::convert::TryFrom<$geometry>`
  instead.
  * <https://github.com/georust/geo/pull/892>

## 0.22.1

- Fix some floating point issues with `BoolOps`
  - <https://github.com/georust/geo/pull/869>

## 0.22.0

- Add densification algorithm for linear geometry components
  - <https://github.com/georust/geo/pull/847>
- You may now specify `Geometry` rather than `Geometry<f64>` since we've added
  a default trait implementation. You may still explicitly declare the numeric
  type as f64, or any other implementation of `CoordNum`, but this should save
  you some typing if you're using f64. The same change applies to `Coordinates`
  and all the geometry variants, like `Point`, `LineString`, etc.
  - <https://github.com/georust/geo/pull/832>
- Fix fast path euclidean distance
  - <https://github.com/georust/pull/848>
- Reexport everything from the `proj` crate
  - <https://github.com/georust/geo/pull/839>
- Added a `geometry` module which re-exports all the inner geometry variants, so you
  can `use geo::geometry::*` to concisely include `Point`, `LineString`, etc.
  - <https://github.com/georust/geo/pull/853>
- Use robust predicates everywhere in geo
  - <https://github.com/georust/geo/pull/852>
- `Winding` trait is rexported under geo::algorithm::Winding (and thus
  geo::Winding and geo::prelude::Winding)
  - <https://github.com/georust/geo/pull/855/files>
- BREAKING: de-exported `WindingOrder` from `geo::WindingOrder`/`geo::algorithms::WindingOrder`.
  Instead, go back to `use geo::winding_order::WindingOrder` - it was briefly rexported as
  `geo::WindingOrder` and `geo::algorithms::WindingOrder`.
  - <https://github.com/georust/geo/pull/855/files>

## 0.21.0

- Boolean operations for `Polygon`s and `MultiPolygon`s: intersect, union, xor,
  and difference. Refer trait `bool_ops::BooleanOps` for more info.
- POSSIBLY BREAKING: Minimum supported version of Rust (MSRV) is now 1.58
- BREAKING: rstar version upgraded to 0.9.x

  - <https://github.com/georust/geo/pull/835>

- POSSIBLY BREAKING: `GeoFloat` types must now implement `num_traits::Signed` and `num_traits::Bounded`. This shouldn't
  affect you if you are using a standard `Geometry<f64>` or `Geometry<f32>` or `geo::GeoFloat` generically.
- Speed up `Relate` and `Contains` traits for large `LineStrings` and `Polygons` by using an RTree to more efficiently
  inspect edges in our topology graph.
- Flatten algorithm namespace. For example:

  ```rust
  # Before
  use geo::algorithm::area::Area;
  use geo::algorithm::bounding_rect::BoundingRect;
  # After
  use geo::{Area, BoundingRect};
  ```

- Speed up `intersects` checks by using a preliminary bbox check
  - <https://github.com/georust/geo/pull/828>
- BREAKING: Remove unneeded reference for `*MapCoords*` closure parameter.
  - <https://github.com/georust/geo/pull/810>
- BREAKING: Bump `proj` dependency to 0.26 which uses PROJ version 9.0
  - <https://github.com/georust/geo/pull/813>
- rename `Translate::translate_inplace` -> `Translate::translate_in_place`
  - <https://github.com/georust/geo/pull/811>
- `MapCoords` restructuring: <https://github.com/georust/geo/pull/811>
  - rename `MapCoordsInplace::map_coords_inplace` -> `MapCoordsInPlace::map_coords_in_place`
  - rename `TryMapCoordsInplace::try_map_coords_inplace` -> `TryMapCoordsInPlace::try_map_coords_in_place`
  - Consolidate traits `TryMapCoords` into `MapCoords` and `TryMapCoordsInplace` into `MapCoordsInPlace`
- Implement `ChamberlainDuquetteArea` for all geo types.
  - <https://github.com/georust/geo/pull/833>
- Add `{Convert,TryConvert}` traits for coordinate value type conversion.
  - <https://github.com/georust/geo/pull/836>
- BREAKING: `MapCoords`/`MapCoordsInPlace` now map `Coordinate`s rather than `(x,y)` tuples
  - <https://github.com/georust/geo/pull/837>
- Tidy fast-path distance algorithm
  - <https://github.com/georust/geo/pull/754>

## 0.20.1

- FIX: update to proper minimum geo-types version
  - <https://github.com/georust/geo/pull/815>

## 0.20.0

- Add `LinesIter` algorithm to iterate over the lines in geometries.
  - Very similar to `CoordsIter`, but only implemented where it makes sense (e.g., for `Polygon`, `Rect`, but not `Point`).
  - <https://github.com/georust/geo/pull/757>
- Add `TryMapCoordsInplace` algorithm that is similar to `TryMapCoords` but modifies a geometry in-place
  - <https://github.com/georust/geo/pull/800>

## 0.19.0

- Bump `proj` crate to 0.25.0, using PROJ 8.1.0
  - <https://github.com/georust/geo/pull/661>
  - <https://github.com/georust/geo/pull/718>
- Add `ChaikinSmoothing` algorithm
  - <https://github.com/georust/geo/pull/648>
- Fix `rotate` for multipolygons to rotate around the collection's centroid, instead of rotating each individual polygon around its own centroid.
  - <https://github.com/georust/geo/pull/651>
- Add `KNearestConcaveHull` algorithm
  - <https://github.com/georust/geo/pull/635>
- Remove cargo-tarpaulin due to instability (#676, #677)
- Fix: `ClosestPoint` for Polygon's handling of internal points
  - <https://github.com/georust/geo/pull/679>
- Implemented `ClosestPoint` method for types Triangle, Rect, GeometryCollection, Coordinate and the Geometry enum.
  - <https://github.com/georust/geo/pull/675>
- BREAKING: `TryMapCoords` Result is now generic rather than a Box<dyn Error>.
  - <https://github.com/georust/geo/issues/722>
- Add `Transform` algorithm
  - <https://github.com/georust/geo/pull/718>
- Add missing `Intersects` implementations
  - <https://github.com/georust/geo/pull/725>
- Note: The MSRV when installing the latest dependencies has increased to 1.55
  - <https://github.com/georust/geo/pull/726>
- Add `get()` to `IntersectionMatrix` for directly querying DE-9IM matrices
  - <https://github.com/georust/geo/pull/714>

## 0.18.0

- Add `line_intersection` to compute point or segment intersection of two Lines.
  - <https://github.com/georust/geo/pull/636>
- Add `Relate` trait to topologically relate two geometries based on [DE-9IM]https://en.wikipedia.org/wiki/DE-9IM semantics.
  - <https://github.com/georust/geo/pull/639>
- Fix `Contains` implementation for Polygons to match the OGC spec using the new `Relate` trait
  - <https://github.com/georust/geo/pull/639>
- BREAKING: `Contains` no longer supports Integer `Polygon` and `Geometry`. This was a trade-off for a `Contains` implementation that was more correct for Floats.
  - <https://github.com/georust/geo/pull/639>

## 0.17.1

- Rewrite the crate documentation
  - <https://github.com/georust/geo/pull/619>
- Fix `Centroid` algorithm for `MultiLineString` when all members have only one
  point.
  - <https://github.com/georust/geo/pull/629>
- Implement `Centroid` algorithm on `Geometry` and its remaining variants.
  - <https://github.com/georust/geo/pull/629>
- Add `GeodesicIntermediate` algorithm
  - <https://github.com/georust/geo/pull/608>

## 0.17.0

- BREAKING: update geo-types to 0.7
  - <https://github.com/georust/geo/blob/geo-types-0.7.0/geo-types/CHANGES.md>
- Introduce `coords_count` method on `CoordsIter`.
  - <https://github.com/georust/geo/pull/563>
- Fix non-empty MultiPoint has 0-dimensions, not 1.
  - <https://github.com/georust/geo/pull/561>
- Add new `EuclideanDistance` implementations: `impl EuclideanDistance<Coordinate<T>> for Line`, `impl EuclideanDistance<Line> for Coordinate`, `impl EuclideanDistance<Coordinate> for Coordinate`
  - <https://github.com/georust/geo/pull/580>
- Introduce `geo::GeoFloat` and `geo::GeoNum` trait so external crates can implement methods which
  operate on geometries generically.
  - <https://github.com/georust/geo/pull/583>
  - <https://github.com/georust/geo/pull/602>
- Make `HasKernel` public to allow geo on exotic numeric types.
  - <https://github.com/georust/geo/pull/583>
- Fix panic when `simplify` is given a negative epsilon
  - <https://github.com/georust/geo/pull/584>
- Performance improvements to `simplify`
  - <https://github.com/georust/geo/pull/584>
- BREAKING: The `T` generic parameter for `CoordsIter` is now an associated type
  - <https://github.com/georust/geo/pull/593>
- Add `CoordsIter::exterior_coords_iter` method to iterate over exterior coordinates of a geometry
  - <https://github.com/georust/geo/pull/594>
- BREAKING: The `ExtremeIndices` and `ExtremePoints` traits have been combined into a new `Extremes` trait containing an `extremes` method. The output of the `extremes` method contains both indices and coordinates. The new implementation is based on `CoordsIter` instead of `ConvexHull`, and now runs 6x faster.
  - <https://github.com/georust/geo/pull/592>

## 0.16.0

- Fix panic when `simplify` is given a negative epsilon
  - <https://github.com/georust/geo/pull/537>
- Add `CoordsIter` trait for iterating over coordinates in geometries.
  - <https://github.com/georust/geo/pull/164>
- Fix edge case handling in `Contains`
  - <https://github.com/georust/geo/pull/526>
- Fix edge case handling in `line_locate_point`
  - <https://github.com/georust/geo/pull/520>
- Add `proj-network` feature enables network grid for optional `proj` integration.
  - <https://github.com/georust/geo/pull/506>
- Add `HasDimensions` trait for working with Geometry dimensionality
  - <https://github.com/georust/geo/pull/524>

## 0.15.0

- Add `Intersects` implementations for all pairs of types
  - <https://github.com/georust/geo/pull/516>
  - <https://github.com/georust/geo/pull/514>
- Add `ConcaveHull` algorithm
  - <https://github.com/georust/geo/pull/480>
- Add robust predicates
  - <https://github.com/georust/geo/pull/511>
  - <https://github.com/georust/geo/pull/505>
  - <https://github.com/georust/geo/pull/504>
  - <https://github.com/georust/geo/pull/502>
- Improve numerical stability in centroid computation
  - <https://github.com/georust/geo/pull/510>

## 0.14.2

- Bump proj version to 0.20.3
  - <https://github.com/georust/geo/pull/496>
- Change closure for `exterior_mut()` and `interiors_mut()` to be `FnOnce`
  - <https://github.com/georust/geo/pull/479>
- Bump proj version to 0.20.0 (superseded by 0.20.3)
  - <https://github.com/georust/geo/pull/472>
- Fix numerical stability in area computation
  - <https://github.com/georust/geo/pull/482>
- Fix `contains` for degenerate zero-area triangles
  - <https://github.com/georust/geo/pull/474>
- Allow MapCoords on Rect to invert coords
  - <https://github.com/georust/geo/pull/490>
- Centroid impl for MultiLineString
  - <https://github.com/georust/geo/pull/485>
- Fix Area logic for Polygon with interiors
  - <https://github.com/georust/geo/pull/487>

## 0.14.1

- Fix bug in Line-Polygon Euclidean distance
  - <https://github.com/georust/geo/pull/477>

## 0.14.0

- Bump geo-types version to 0.6.0
- Bump rstar version to 0.8.0
  - <https://github.com/georust/geo/pull/468>
- Bump proj version to 16.2
  - <https://github.com/georust/geo/pull/453>
- Extract PostGIS integration out to new `geo-postgis` crate
  - <https://github.com/georust/geo/pull/466>
- Add new `GeodesicDistance` and `GeodesicLength` algorithms
  - <https://github.com/georust/geo/pull/440>
- Implement `Area` for all types
  - <https://github.com/georust/geo/pull/459>
- Implement `BoundingRect` for all types
  - <https://github.com/georust/geo/pull/443>
- Add more `Contains` implementations
  - <https://github.com/georust/geo/pull/451>
- Fix Vincenty algorithms for equatorial and coincident points
  - <https://github.com/georust/geo/pull/438>
- Separate area algorithms into unsigned and signed methods. For clarity, the existing `Area#area`, which can return a negative value depending on winding order, has been renamed to `Area#signed_area`. Most likely, if you aren't sure which one to use, you'll want `unsigned_area` which is always positive.
  - <https://github.com/georust/geo/pull/463>

## 0.13.0

- Bump geo-types dependency to 0.5.0
- Bump proj dependency to 0.15.1
- Add a mutable Coordinate iterator to LineString
  - <https://github.com/georust/geo/pull/404>
- Fix for rectangle intersection check
  - <https://github.com/georust/geo/pull/420>
- Bump proj to 0.14.4
  - <https://github.com/georust/geo/pull/412>
- Add `BoundingRect` implementation for `Rect`
  - <https://github.com/georust/geo/pull/355>
- Add Chamberlain–Duquette area algorithm
  - <https://github.com/georust/geo/pull/369>
- Make Euclidean Line-Line distance symmetrical
  - <https://github.com/georust/geo/pull/371>
- Bump rstar dependency to 0.4
  - <https://github.com/georust/geo/pull/373>
- Mark `ToGeo` as deprecated
  - <https://github.com/georust/geo/pull/375>
- Remove usages of 'failure' crate
  - <https://github.com/georust/geo/pull/388>

## 0.12.2

- Introduce `point!`, `line_string!`, and `polygon!` macros.
  - <https://github.com/georust/geo/pull/352>

## 0.12.1

- Add `FrechetDistance` algorithm
  - <https://github.com/georust/geo/pull/348>

## 0.12.0

- Bump `geo-types` dependency to 0.4.0
- Bump `rstar` and `proj` dependencies
  - <https://github.com/georust/geo/pull/346>
- Implement `Centroid` for `MultiPoint`
  - <https://github.com/georust/geo/pull/322>

## 0.11.0

- Replace the [spade]https://crates.io/crates/spade crate with the [rstar]https://crates.io/crates/rstar crate
  - <https://github.com/georust/geo/pull/314>
- Remove unnecessary algorithm trait bounds
  - <https://github.com/georust/geo/pull/320/>

## 0.10.3

- Add `MapCoords` for `Rect`s
  - <https://github.com/georust/geo/commit/11e4b67ae5fa658bd556eea96ba6fd49f32921c4>
- Rewrite vincenty/haversine docs; specify param/return units.
  - <https://github.com/georust/geo/commit/6ca45c347c53c5f0fd41b90ff5d0ba67d1b2ec15>
- `Area` can work on some non-`Float` geometries (e.g. `Rect<Integer>`)
  - <https://github.com/georust/geo/commit/1efd87a9bf3f4140f252014b59ff174af8e014aa>

## 0.10.2

- Add `to_degrees` and `to_radians` methods on `Point`s
  - <https://github.com/georust/geo/pull/306>

## 0.10.1

- Fix some edge case on centroid computation
  - <https://github.com/georust/geo/pull/305>

## 0.10.0

- Remove unnecessary borrows in function params for `Copy` types.
  - <https://github.com/georust/geo/pull/265>
- Rename bounding ‘box’ to ‘rect’; move structure to geo-types.
  - <https://github.com/georust/geo/pull/295>

## 0.9.1

- Fix Line-Polygon euclidean distance
  - <https://github.com/georust/geo/pull/226>
- Implement `EuclideanDistance` for `MultiPolygon` to `Line` and `Line` to `MultiPolygon`
  - <https://github.com/georust/geo/pull/227>
- Add `Line`-`LineString` euclidean distance
  - <https://github.com/georust/geo/pull/232>
- Add `VincentyDistance` and `VincentyLength` algorithms
  - <https://github.com/georust/geo/pull/213>
- Add `HaversineIntermediate` algorithm

## 0.9.0

- Make serde an optional dependency for `geo`, rename feature to `use-serde`
  - <https://github.com/georust/geo/pull/209>
- Use the `proj` crate, rename feature to `use-proj`
  - <https://github.com/georust/geo/pull/214>
- Return unboxed iterators from `LineString::lines`, `Winding::points_cw`, and `Winding::points_ccw`
  - <https://github.com/georust/geo/pull/218>
- Fix compilation errors when using the `proj` feature
  - <https://github.com/georust/geo/commit/0924f3179c95bfffb847562ee91675d7aa8454f5>
- Add `Polygon`-`Polygon` and `LineString`-`LineString` distance
  - <https://github.com/georust/geo/pull/219>
- Update postgis optional dependency to 0.6
  - <https://github.com/georust/geo/pull/215>
- Clarify wording for Contains algorithm.
  - <https://github.com/georust/geo/pull/220>

## 0.8.3

- Reexport core types from `geo-types`
  - <https://github.com/georust/geo/pull/201>

## 0.8.2

- Fix documentation generation on docs.rs
  - <https://github.com/georust/geo/pull/202>

## 0.8.1

- Fix centroid calculation for degenerate polygons
  - <https://github.com/georust/geo/pull/203>

## 0.8.0

- Prefix Euclidean distance/length traits with 'Euclidean'.
  - <https://github.com/georust/geo/pull/200>
- Bump num-traits: 0.1 → 0.2
  - <https://github.com/georust/geo/pull/188>
- Implement `SpatialObject` for `Line` type
  - <https://github.com/georust/geo/pull/181>
- Implement a `TryMapCoords` trait
  - <https://github.com/georust/geo/pull/191>
  - <https://github.com/georust/geo/pull/197>
- Impl Polygon convexity function on the type
  - <https://github.com/georust/geo/pull/195>
- Implement rust-proj as an optional feature within geo
  - <https://github.com/georust/geo/pull/192>

## 0.7.4

- [`cross_prod` method added to `Point`]https://github.com/georust/geo/pull/189

## 0.7.3

- [Allow coordinates to be more types (not just `Float`s)]https://github.com/georust/geo/pull/187

## 0.7.2

- [Easy methods to convert a Geometry to the underlying type]https://github.com/georust/geo/pull/184
- [Map coords inplace]https://github.com/georust/geo/pull/170
- [Added bearing trait]https://github.com/georust/geo/pull/186)
- [Winding/Orientation for LineStrings]https://github.com/georust/geo/pull/169

## 0.7.1

- [Add Haversine length algorithm]https://github.com/georust/geo/pull/183

## 0.7.0

- [Add `Line` to the `Geometry` `enum`]https://github.com/georust/geo/pull/179
- [Use new bulk-load method for initial R\* Tree population]https://github.com/georust/geo/pull/178
- [Add PostGIS and GeoJSON integration/conversions]https://github.com/georust/geo/pull/180

## 0.6.3

- [Initial implementation of a `ClosestPoint` algorithm]https://github.com/georust/geo/pull/167

## 0.6.2

- [Add a prelude: `use geo::prelude::*`]https://github.com/georust/geo/pull/162

## 0.6.1

- [Add a `lines` iterator method on `LineString`]https://github.com/georust/geo/pull/160
- [Implement `Contains<Polygon>` for `Polygon`]https://github.com/georust/geo/pull/159
- [Correctly check for LineString containment in Polygon]https://github.com/georust/geo/pull/158

## 0.6.0

- [Remove unnecessary trait bound on `Translate`]https://github.com/georust/geo/pull/148
- [Topology preserving Visvalingam-Whyatt algorithm]https://github.com/georust/geo/pull/143
- [Implement `Copy` for `Line`]https://github.com/georust/geo/pull/150
- [Rewrite `RotatePoint` impls to be generic]https://github.com/georust/geo/pull/153
- [Add associated return type for `BoundingBox`]https://github.com/georust/geo/pull/156
- [Add associated return type for `Centroid`]https://github.com/georust/geo/pull/154

## 0.5.0

- [Reimplement `Translate` trait using `MapCoords`]https://github.com/georust/geo/pull/145

## 0.4.13

- [Implement Simplification traits for more types]https://github.com/georust/geo/pull/135
- [Add a MapCoords trait]https://github.com/georust/geo/pull/136

## 0.4.12

- [Improve robustness when calculating distance from a point to a
  line-segment](https://github.com/georust/geo/pull/139)

## 0.4.11

- [Add `From`, `IntoIterator`, `Into` impls; add doc comments]https://github.com/georust/geo/pull/131

## 0.4.10

- [Add `Translation` trait.]https://github.com/georust/geo/pull/128

## 0.4.9

- [Add `Into` trait implementations.]https://github.com/georust/geo/pull/129

## 0.4.8

- [Add `HaversineDestination` algorithm trait]https://github.com/georust/geo/pull/124

## 0.4.7

- [Serializing/deserializing via serde]https://github.com/georust/geo/pull/125

## 0.4.6

- [Fix incorrect usage of `abs_sub`]https://github.com/georust/geo/pull/120

## 0.4.5

- [Add `Line` type (representing a line segment)]https://github.com/georust/geo/pull/118

## 0.4.4

- [Quickhull orientation fix]https://github.com/georust/geo/pull/110
- [Implement distance traits for more geometries]https://github.com/georust/geo/pull/113
- [Correctly calculate centroid for complex polygons]https://github.com/georust/geo/pull/112
- [Add `Orient` trait for polygon]https://github.com/georust/geo/pull/108
- [Add geometry rotation]https://github.com/georust/geo/pull/107
- [Add extreme point-finding]https://github.com/georust/geo/pull/114
- [Add contains point impl for bbox]https://github.com/georust/geo/commit/3e00ef94c3d69e6d0b1caab86224469ced9444e6

## 0.4.3

- [Implement Point to multipart geometry distance methods]https://github.com/georust/geo/pull/104
- [Fixture cleanup]https://github.com/georust/geo/pull/105

## 0.4.2

- [Fix Haversine distance implementation bug]https://github.com/georust/geo/pull/101

## 0.4.1

- [Implement convex hull algorithm]https://github.com/georust/geo/pull/89

## 0.4.0

- [Implement Haversine algorithm]https://github.com/georust/geo/pull/90
- [fix when multipolygon composed of two polygons of opposite clockwise]https://github.com/georust/geo/commits/master
- [Migrate from 'num' to 'num_traits' crate]https://github.com/georust/geo/pull/86

## 0.3.2

- [Add Visvalingam-Whyatt line-simplification algorithm]https://github.com/georust/geo/pull/84

## 0.3.1

- [Within Epsilon matcher]https://github.com/georust/geo/pull/82

## 0.3.0

- [Add named fields for the `Polygon` structure]https://github.com/georust/geo/pull/68

## 0.2.8

- [Implement `Intersects<Bbox<T>> for Polygon`]https://github.com/georust/geo/pull/76

## 0.2.7

- [Implement `Intersects<Polygon<T>> for Polygon`]https://github.com/georust/geo/issues/69

## 0.2.6

- [Add Point to Polygon and Point to LineString distance methods]https://github.com/georust/geo/pull/61

## 0.2.5

- [Implement LineString simplification]https://github.com/georust/geo/pull/55

## 0.2.4

- [Performance improvements when iterating over pairs of coordinates]https://github.com/georust/geo/pull/50

## 0.2.3

- [Add type Bbox and trait BoundingBox]https://github.com/georust/geo/pull/41

## 0.2.2

- [Add the Length trait and implement Length for LineString and MultiLineString]https://github.com/georust/geo/pull/44

## 0.2.1

- [Modify area for Polygon to consider also the isles]https://github.com/georust/geo/pull/43
- [Add area trait to MultiPolygon]https://github.com/georust/geo/pull/43

## 0.2.0

- [Data structures and traits are now generic (previously all were `f64`)]https://github.com/georust/geo/pull/30
- [`geo::COORD_PRECISION` is now `f32` (previously was `f64`)]https://github.com/georust/geo/pull/40

## 0.1.1

- [`Intersects` trait bugfixes]https://github.com/georust/geo/pull/34

## 0.1.0

- [Add `Area` trait]https://github.com/georust/geo/pull/31
- [Add `Contains` trait]https://github.com/georust/geo/pull/31
- [Add `Distance` trait, remove `Point::distance_to`]https://github.com/georust/geo/pull/31
- [Add `Intersects` trait]https://github.com/georust/geo/pull/31
- [Implement `Centroid` trait for `MultiPolygon`]https://github.com/georust/geo/pull/31

## 0.0.7

- [Implement `Centroid` trait, `Point::distance_to` method]https://github.com/georust/geo/pull/24