}
+/**
+* Convert an edge from degrees to radians.
+*/
+static void edge_deg2rad(GEOGRAPHIC_EDGE *e)
+{
+ (e->start).lat = deg2rad((e->start).lat);
+ (e->end).lat = deg2rad((e->end).lat);
+ (e->start).lon = deg2rad((e->start).lon);
+ (e->end).lon = deg2rad((e->end).lon);
+}
+
+/**
+* Convert an edge from radians to degrees.
+*/
+static void edge_rad2deg(GEOGRAPHIC_EDGE *e)
+{
+ (e->start).lat = rad2deg((e->start).lat);
+ (e->end).lat = rad2deg((e->end).lat);
+ (e->start).lon = rad2deg((e->start).lon);
+ (e->end).lon = rad2deg((e->end).lon);
+}
+
+/**
+* Convert a point from degrees to radians.
+*/
+static void point_deg2rad(GEOGRAPHIC_POINT *p)
+{
+ p->lat = latitude_radians_normalize(deg2rad(p->lat));
+ p->lon = longitude_radians_normalize(deg2rad(p->lon));
+}
+
+/**
+* Convert a point from radians to degrees.
+*/
+static void point_rad2deg(GEOGRAPHIC_POINT *p)
+{
+ p->lat = rad2deg(p->lat);
+ p->lon = rad2deg(p->lon);
+}
+
void test_signum(void)
{
CU_ASSERT_EQUAL(signum(-5.0),-1);
/**
* Convert a longitude to the range of -PI,PI
*/
-static double longitude_radians_normalize(double lon)
+double longitude_radians_normalize(double lon)
{
if( lon == -1.0 * M_PI )
return M_PI;
/**
* Convert a latitude to the range of -PI/2,PI/2
*/
-static double latitude_radians_normalize(double lat)
+double latitude_radians_normalize(double lat)
{
if( lat > 2.0 * M_PI )
return lat;
}
-/**
-* Convert an edge from degrees to radians.
-*/
-void edge_deg2rad(GEOGRAPHIC_EDGE *e)
-{
- (e->start).lat = deg2rad((e->start).lat);
- (e->end).lat = deg2rad((e->end).lat);
- (e->start).lon = deg2rad((e->start).lon);
- (e->end).lon = deg2rad((e->end).lon);
-}
-
-/**
-* Convert an edge from radians to degrees.
-*/
-void edge_rad2deg(GEOGRAPHIC_EDGE *e)
-{
- (e->start).lat = rad2deg((e->start).lat);
- (e->end).lat = rad2deg((e->end).lat);
- (e->start).lon = rad2deg((e->start).lon);
- (e->end).lon = rad2deg((e->end).lon);
-}
-
-/**
-* Convert a point from degrees to radians.
-*/
-void point_deg2rad(GEOGRAPHIC_POINT *p)
-{
- p->lat = latitude_radians_normalize(deg2rad(p->lat));
- p->lon = longitude_radians_normalize(deg2rad(p->lon));
-}
-
-/**
-* Convert a point from radians to degrees.
-*/
-void point_rad2deg(GEOGRAPHIC_POINT *p)
-{
- p->lat = rad2deg(p->lat);
- p->lon = rad2deg(p->lon);
-}
-
/**
* Shift a point around by a number of radians
*/
return;
}
-
int geographic_point_equals(const GEOGRAPHIC_POINT *g1, const GEOGRAPHIC_POINT *g2)
{
return FP_EQUALS(g1->lat, g2->lat) && FP_EQUALS(g1->lon, g2->lon);
void geographic_point_init(double lon, double lat, GEOGRAPHIC_POINT *g)
{
g->lat = latitude_radians_normalize(deg2rad(lat));
- g->lon = longitude_radians_normalize(deg2rad(lon));
+ g->lon = longitude_radians_normalize(deg2rad(lon));
}
/**
int edge_intersection(const GEOGRAPHIC_EDGE *e1, const GEOGRAPHIC_EDGE *e2, GEOGRAPHIC_POINT *g);
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);
-void edge_deg2rad(GEOGRAPHIC_EDGE *e);
-void edge_rad2deg(GEOGRAPHIC_EDGE *e);
-void point_deg2rad(GEOGRAPHIC_POINT *p);
-void point_rad2deg(GEOGRAPHIC_POINT *p);
void geographic_point_init(double lon, double lat, GEOGRAPHIC_POINT *g);
int ptarray_point_in_ring_winding(const POINTARRAY *pa, const POINT2D *pt_to_test);
int lwpoly_covers_point2d(const LWPOLY *poly, const GBOX *gbox, const POINT2D *pt_to_test);
int geographic_point_equals(const GEOGRAPHIC_POINT *g1, const GEOGRAPHIC_POINT *g2);
int crosses_dateline(const GEOGRAPHIC_POINT *s, const GEOGRAPHIC_POINT *e);
void point_shift(GEOGRAPHIC_POINT *p, double shift);
+double longitude_radians_normalize(double lon);
+double latitude_radians_normalize(double lat);
+
/*
** Prototypes for spheroid functions.
*/