Boost.Geometry: an introduction to geographic computation
Boost.Geometry is a C++ library defining concepts, primitives and algorithms for solving geometry problems. It contains a dimension-agnostic, coordinate-system-agnostic and scalable kernel, on top of which algorithms are built: area, distance, convex hull, intersection, within, simplify and much more. The library contains instantiable geometry classes, but library users can also use their own legacy geometry types. It also contains spatial index allowing to perform spatial and k-nn queries on a collection of geometries.
Boost.Geometry might be used in all domains where geometry plays a role: mapping and GIS, game development, computer graphics and widgets, robotics, astronomy and more. The core is designed to be generic and support those domains.
In this talk we start by an introduction to the library by briefly listing the supported algorithms and tools while mentioning the latest features. We describe the design of the library and how functionality is separated in algorithms and strategies by highlighting the similarity to STL design. Then we use the distance computation problem for different coordinate systems to illustrate how this design can be used to extend library’s functionality from geometric algorithms on the plane to sphere and ellipsoid. We show how one can optimize the algorithms using r-trees and we conclude with coordinate system transformations.