|
static int | point3d_equals (const POINT3D *p1, const POINT3D *p2) |
| Utility function for ptarray_contains_point_sphere() More...
|
|
double | longitude_radians_normalize (double lon) |
| Convert a longitude to the range of -PI,PI. More...
|
|
double | latitude_radians_normalize (double lat) |
| Convert a latitude to the range of -PI/2,PI/2. More...
|
|
double | longitude_degrees_normalize (double lon) |
| Convert a longitude to the range of -180,180. More...
|
|
double | latitude_degrees_normalize (double lat) |
| Convert a latitude to the range of -90,90. More...
|
|
void | point_shift (GEOGRAPHIC_POINT *p, double shift) |
| Shift a point around by a number of radians. More...
|
|
int | geographic_point_equals (const GEOGRAPHIC_POINT *g1, const GEOGRAPHIC_POINT *g2) |
|
void | geographic_point_init (double lon, double lat, GEOGRAPHIC_POINT *g) |
| Initialize a geographic point. More...
|
|
double | gbox_angular_height (const GBOX *gbox) |
| Returns the angular height (latitudinal span) of the box in radians. More...
|
|
double | gbox_angular_width (const GBOX *gbox) |
| Returns the angular width (longitudinal span) of the box in radians. More...
|
|
int | gbox_centroid (const GBOX *gbox, POINT2D *out) |
| Computes the average(ish) center of the box and returns success. More...
|
|
static int | gbox_check_poles (GBOX *gbox) |
| Check to see if this geocentric gbox is wrapped around a pole. More...
|
|
void | geog2cart (const GEOGRAPHIC_POINT *g, POINT3D *p) |
| Convert spherical coordinates to cartesian coordinates on unit sphere. More...
|
|
void | cart2geog (const POINT3D *p, GEOGRAPHIC_POINT *g) |
| Convert cartesian coordinates on unit sphere to spherical coordinates. More...
|
|
void | ll2cart (const POINT2D *g, POINT3D *p) |
| Convert lon/lat coordinates to cartesian coordinates on unit sphere. More...
|
|
static double | dot_product (const POINT3D *p1, const POINT3D *p2) |
| Convert cartesian coordinates on unit sphere to lon/lat coordinates static void cart2ll(const POINT3D *p, POINT2D *g) { g->x = longitude_degrees_normalize(180.0 * atan2(p->y, p->x) / M_PI); g->y = latitude_degrees_normalize(180.0 * asin(p->z) / M_PI); }. More...
|
|
static void | cross_product (const POINT3D *a, const POINT3D *b, POINT3D *n) |
| Calculate the cross product of two vectors. More...
|
|
void | vector_sum (const POINT3D *a, const POINT3D *b, POINT3D *n) |
| Calculate the sum of two vectors. More...
|
|
static void | vector_difference (const POINT3D *a, const POINT3D *b, POINT3D *n) |
| Calculate the difference of two vectors. More...
|
|
void | vector_scale (POINT3D *n, double scale) |
| Scale a vector out by a factor. More...
|
|
double | vector_angle (const POINT3D *v1, const POINT3D *v2) |
| Angle between two unit vectors. More...
|
|
static void | normalize2d (POINT2D *p) |
| Normalize to a unit vector. More...
|
|
void | unit_normal (const POINT3D *P1, const POINT3D *P2, POINT3D *normal) |
| Calculates the unit normal to two vectors, trying to avoid problems with over-narrow or over-wide cases. More...
|
|
void | vector_rotate (const POINT3D *v1, const POINT3D *v2, double angle, POINT3D *n) |
| Rotates v1 through an angle (in radians) within the plane defined by v1/v2, returns the rotated vector in n. More...
|
|
void | normalize (POINT3D *p) |
| Normalize to a unit vector. More...
|
|
void | robust_cross_product (const GEOGRAPHIC_POINT *p, const GEOGRAPHIC_POINT *q, POINT3D *a) |
| Computes the cross product of two vectors using their lat, lng representations. More...
|
|
void | x_to_z (POINT3D *p) |
|
void | y_to_z (POINT3D *p) |
|
int | crosses_dateline (const GEOGRAPHIC_POINT *s, const GEOGRAPHIC_POINT *e) |
|
static int | edge_point_side (const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *p) |
| Returns -1 if the point is to the left of the plane formed by the edge, 1 if the point is to the right, and 0 if the point is on the plane. More...
|
|
static double | sphere_angle (const GEOGRAPHIC_POINT *a, const GEOGRAPHIC_POINT *b, const GEOGRAPHIC_POINT *c) |
| Returns the angle in radians at point B of the triangle formed by A-B-C. More...
|
|
static double | sphere_signed_area (const GEOGRAPHIC_POINT *a, const GEOGRAPHIC_POINT *b, const GEOGRAPHIC_POINT *c) |
| Computes the spherical area of a triangle. More...
|
|
int | edge_point_on_plane (const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *p) |
| Returns true if the point p is on the great circle plane. More...
|
|
int | edge_point_in_cone (const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *p) |
| Returns true if the point p is inside the cone defined by the two ends of the edge e. More...
|
|
int | edge_contains_coplanar_point (const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *p) |
| True if the longitude of p is within the range of the longitude of the ends of e. More...
|
|
double | sphere_distance (const GEOGRAPHIC_POINT *s, const GEOGRAPHIC_POINT *e) |
| Given two points on a unit sphere, calculate their distance apart in radians. More...
|
|
double | sphere_distance_cartesian (const POINT3D *s, const POINT3D *e) |
| Given two unit vectors, calculate their distance apart in radians. More...
|
|
double | sphere_direction (const GEOGRAPHIC_POINT *s, const GEOGRAPHIC_POINT *e, double d) |
| Given two points on a unit sphere, calculate the direction from s to e. More...
|
|
int | edge_contains_point (const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *p) |
| Returns true if the point p is on the minor edge defined by the end points of e. More...
|
|
double | z_to_latitude (double z, int top) |
| Used in great circle to compute the pole of the great circle. More...
|
|
int | clairaut_cartesian (const POINT3D *start, const POINT3D *end, GEOGRAPHIC_POINT *g_top, GEOGRAPHIC_POINT *g_bottom) |
| Computes the pole of the great circle disk which is the intersection of the great circle with the line of maximum/minimum gradient that lies on the great circle plane. More...
|
|
int | clairaut_geographic (const GEOGRAPHIC_POINT *start, const GEOGRAPHIC_POINT *end, GEOGRAPHIC_POINT *g_top, GEOGRAPHIC_POINT *g_bottom) |
| Computes the pole of the great circle disk which is the intersection of the great circle with the line of maximum/minimum gradient that lies on the great circle plane. More...
|
|
int | edge_intersection (const GEOGRAPHIC_EDGE *e1, const GEOGRAPHIC_EDGE *e2, GEOGRAPHIC_POINT *g) |
| Returns true if an intersection can be calculated, and places it in *g. More...
|
|
double | edge_distance_to_point (const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *gp, GEOGRAPHIC_POINT *closest) |
|
double | edge_distance_to_edge (const GEOGRAPHIC_EDGE *e1, const GEOGRAPHIC_EDGE *e2, GEOGRAPHIC_POINT *closest1, GEOGRAPHIC_POINT *closest2) |
| Calculate the distance between two edges. More...
|
|
int | sphere_project (const GEOGRAPHIC_POINT *r, double distance, double azimuth, GEOGRAPHIC_POINT *n) |
| Given a starting location r, a distance and an azimuth to the new point, compute the location of the projected point on the unit sphere. More...
|
|
int | edge_calculate_gbox_slow (const GEOGRAPHIC_EDGE *e, GBOX *gbox) |
|
int | edge_calculate_gbox (const POINT3D *A1, const POINT3D *A2, GBOX *gbox) |
| The magic function, given an edge in spherical coordinates, calculate a 3D bounding box that fully contains it, taking into account the curvature of the sphere on which it is inscribed. More...
|
|
static int | lwpoly_pt_outside_hack (const LWPOLY *poly, POINT2D *pt_outside) |
|
int | lwpoly_pt_outside (const LWPOLY *poly, POINT2D *pt_outside) |
|
int | gbox_pt_outside (const GBOX *gbox, POINT2D *pt_outside) |
| Given a unit geocentric gbox, return a lon/lat (degrees) coordinate point point that is guaranteed to be outside the box (and therefore anything it contains). More...
|
|
static int | ptarray_segmentize_sphere_edge_recursive (const POINT3D *p1, const POINT3D *p2, const POINT4D *v1, const POINT4D *v2, double d, double max_seg_length, POINTARRAY *pa) |
|
static POINTARRAY * | ptarray_segmentize_sphere (const POINTARRAY *pa_in, double max_seg_length) |
| Create a new point array with no segment longer than the input segment length (expressed in radians!) More...
|
|
LWGEOM * | lwgeom_segmentize_sphere (const LWGEOM *lwg_in, double max_seg_length) |
| Create a new, densified geometry where no segment is longer than max_seg_length. More...
|
|
double | ptarray_area_sphere (const POINTARRAY *pa) |
| Returns the area of the ring (ring must be closed) in square radians (surface of the sphere is 4*PI). More...
|
|
static double | ptarray_distance_spheroid (const POINTARRAY *pa1, const POINTARRAY *pa2, const SPHEROID *s, double tolerance, int check_intersection) |
|
double | lwgeom_area_sphere (const LWGEOM *lwgeom, const SPHEROID *spheroid) |
| Calculate the area of an LWGEOM. More...
|
|
LWPOINT * | lwgeom_project_spheroid (const LWPOINT *r, const SPHEROID *spheroid, double distance, double azimuth) |
| Calculate a projected point given a source point, a distance and a bearing. More...
|
|
double | lwgeom_azumith_spheroid (const LWPOINT *r, const LWPOINT *s, const SPHEROID *spheroid) |
| Calculate a bearing (azimuth) given a source and destination point. More...
|
|
double | lwgeom_distance_spheroid (const LWGEOM *lwgeom1, const LWGEOM *lwgeom2, const SPHEROID *spheroid, double tolerance) |
| Calculate the distance between two LWGEOMs, using the coordinates are longitude and latitude. More...
|
|
int | lwgeom_covers_lwgeom_sphere (const LWGEOM *lwgeom1, const LWGEOM *lwgeom2) |
| Calculate covers predicate for two lwgeoms on the sphere. More...
|
|
int | lwpoly_covers_point2d (const LWPOLY *poly, const POINT2D *pt_to_test) |
| Given a polygon (lon/lat decimal degrees) and point (lon/lat decimal degrees) and a guaranteed outside point (lon/lat decimal degrees) (calculate with gbox_pt_outside()) return LW_TRUE if point is inside or on edge of polygon. More...
|
|
int | lwpoly_covers_lwpoly (const LWPOLY *poly1, const LWPOLY *poly2) |
| Given a polygon1 check if all points of polygon2 are inside polygon1 and no intersections of the polygon edges occur. More...
|
|
int | lwpoly_covers_lwline (const LWPOLY *poly, const LWLINE *line) |
|
int | lwpoly_covers_pointarray (const LWPOLY *lwpoly, const POINTARRAY *pta) |
| return LW_TRUE if all points are inside the polygon More...
|
|
int | lwpoly_intersects_line (const LWPOLY *lwpoly, const POINTARRAY *line) |
| Checks if any edges of lwpoly intersect with the line formed by the pointarray return LW_TRUE if any intersection between the given polygon and the line. More...
|
|
int | lwline_covers_lwpoint (const LWLINE *lwline, const LWPOINT *lwpoint) |
| return LW_TRUE if any of the line segments covers the point More...
|
|
int | lwline_covers_lwline (const LWLINE *lwline1, const LWLINE *lwline2) |
| Check if first and last point of line2 are covered by line1 and then each point in between has to be one line1 in the exact same order return LW_TRUE if all edge points of line2 are on line1. More...
|
|
int | getPoint2d_p_ro (const POINTARRAY *pa, uint32_t n, POINT2D **point) |
| This function can only be used on LWGEOM that is built on top of GSERIALIZED, otherwise alignment errors will ensue. More...
|
|
int | ptarray_calculate_gbox_geodetic (const POINTARRAY *pa, GBOX *gbox) |
| Calculate geodetic (x/y/z) box and add values to gbox. More...
|
|
static int | lwpoint_calculate_gbox_geodetic (const LWPOINT *point, GBOX *gbox) |
|
static int | lwline_calculate_gbox_geodetic (const LWLINE *line, GBOX *gbox) |
|
static int | lwpolygon_calculate_gbox_geodetic (const LWPOLY *poly, GBOX *gbox) |
|
static int | lwtriangle_calculate_gbox_geodetic (const LWTRIANGLE *triangle, GBOX *gbox) |
|
static int | lwcollection_calculate_gbox_geodetic (const LWCOLLECTION *coll, GBOX *gbox) |
|
int | lwgeom_calculate_gbox_geodetic (const LWGEOM *geom, GBOX *gbox) |
| Calculate the geodetic bounding box for an LWGEOM. More...
|
|
static int | ptarray_check_geodetic (const POINTARRAY *pa) |
|
static int | lwpoint_check_geodetic (const LWPOINT *point) |
|
static int | lwline_check_geodetic (const LWLINE *line) |
|
static int | lwpoly_check_geodetic (const LWPOLY *poly) |
|
static int | lwtriangle_check_geodetic (const LWTRIANGLE *triangle) |
|
static int | lwcollection_check_geodetic (const LWCOLLECTION *col) |
|
int | lwgeom_check_geodetic (const LWGEOM *geom) |
| Check that coordinates of LWGEOM are all within the geodetic range (-180, -90, 180, 90) More...
|
|
static int | ptarray_force_geodetic (POINTARRAY *pa) |
|
static int | lwpoint_force_geodetic (LWPOINT *point) |
|
static int | lwline_force_geodetic (LWLINE *line) |
|
static int | lwpoly_force_geodetic (LWPOLY *poly) |
|
static int | lwcollection_force_geodetic (LWCOLLECTION *col) |
|
int | lwgeom_force_geodetic (LWGEOM *geom) |
| Force coordinates of LWGEOM into geodetic range (-180, -90, 180, 90) More...
|
|
double | ptarray_length_spheroid (const POINTARRAY *pa, const SPHEROID *s) |
|
double | lwgeom_length_spheroid (const LWGEOM *geom, const SPHEROID *s) |
| Calculate the geodetic length of a lwgeom on the unit sphere. More...
|
|
static int | ptarray_nudge_geodetic (POINTARRAY *pa) |
| When features are snapped or sometimes they are just this way, they are very close to the geodetic bounds but slightly over. More...
|
|
int | lwgeom_nudge_geodetic (LWGEOM *geom) |
| When features are snapped or sometimes they are just this way, they are very close to the geodetic bounds but slightly over. More...
|
|
static int | point_in_cone (const POINT3D *A1, const POINT3D *A2, const POINT3D *P) |
| Utility function for checking if P is within the cone defined by A1/A2. More...
|
|
static int | dot_product_side (const POINT3D *p, const POINT3D *q) |
| Utility function for edge_intersects(), signum with a tolerance in determining if the value is zero. More...
|
|
uint32_t | edge_intersects (const POINT3D *A1, const POINT3D *A2, const POINT3D *B1, const POINT3D *B2) |
| Returns non-zero if edges A and B interact. More...
|
|
int | ptarray_contains_point_sphere (const POINTARRAY *pa, const POINT2D *pt_outside, const POINT2D *pt_to_test) |
| This routine returns LW_TRUE if the stabline joining the pt_outside and pt_to_test crosses the ring an odd number of times, or if the pt_to_test is on the ring boundary itself, returning LW_FALSE otherwise. More...
|
|