# Spherical math

Low-level utilities for spherical geometry.

## geoArea(*object*)

Source · Returns the spherical area of the specified GeoJSON *object* in steradians. This is the spherical equivalent of *path*.area.

## geoBounds(*object*)

Source · Returns the spherical bounding box for the specified GeoJSON *object*. The bounding box is represented by a two-dimensional array: [[*left*, *bottom*], [*right*, *top*]], where *left* is the minimum longitude, *bottom* is the minimum latitude, *right* is maximum longitude, and *top* is the maximum latitude. All coordinates are given in degrees. (Note that in projected planar coordinates, the minimum latitude is typically the maximum *y*-value, and the maximum latitude is typically the minimum *y*-value.) This is the spherical equivalent of *path*.bounds.

## geoCentroid(*object*)

Source · Returns the spherical centroid of the specified GeoJSON *object*. This is the spherical equivalent of *path*.centroid.

## geoDistance(*a*, *b*)

Source · Returns the great-arc distance in radians between the two points *a* and *b*. Each point must be specified as a two-element array [*longitude*, *latitude*] in degrees. This is the spherical equivalent of *path*.measure given a LineString of two points.

## geoLength(*object*)

Source · Returns the great-arc length of the specified GeoJSON *object* in radians. For polygons, returns the perimeter of the exterior ring plus that of any interior rings. This is the spherical equivalent of *path*.measure.

## geoInterpolate(*a*, *b*)

Source · Returns an interpolator function given two points *a* and *b*. Each point must be specified as a two-element array [*longitude*, *latitude*] in degrees. The returned interpolator function takes a single argument *t*, where *t* is a number ranging from 0 to 1; a value of 0 returns the point *a*, while a value of 1 returns the point *b*. Intermediate values interpolate from *a* to *b* along the great arc that passes through both *a* and *b*. If *a* and *b* are antipodes, an arbitrary great arc is chosen.

## geoContains(*object*, *point*)

Source · Returns true if and only if the specified GeoJSON *object* contains the specified *point*, or false if the *object* does not contain the *point*. The point must be specified as a two-element array [*longitude*, *latitude*] in degrees. For Point and MultiPoint geometries, an exact test is used; for a Sphere, true is always returned; for other geometries, an epsilon threshold is applied.

## geoRotation(*angles*)

Source · Returns a rotation function for the given *angles*, which must be a two- or three-element array of numbers [*lambda*, *phi*, *gamma*] specifying the rotation angles in degrees about each spherical axis. (These correspond to yaw, pitch and roll.) If the rotation angle *gamma* is omitted, it defaults to 0. See also *projection*.rotate.

*rotation*(*point*)

Source · Returns a new array [*longitude*, *latitude*] in degrees representing the rotated point of the given *point*. The point must be specified as a two-element array [*longitude*, *latitude*] in degrees.

*rotation*.invert(*point*)

Source · Returns a new array [*longitude*, *latitude*] in degrees representing the point of the given rotated *point*; the inverse of *rotation*. The point must be specified as a two-element array [*longitude*, *latitude*] in degrees.