]> granicus.if.org Git - postgis/commitdiff
Fix some test cases crossing the date line
authorPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 16 Sep 2009 22:43:20 +0000 (22:43 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 16 Sep 2009 22:43:20 +0000 (22:43 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@4505 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/cunit/cu_geodetic.c
liblwgeom/cunit/cu_geodetic_data.h [new file with mode: 0644]
liblwgeom/lwgeodetic.c
liblwgeom/lwgeodetic.h

index 9b2f5eb992ae23975e50f6d68f6d353d18f85d72..5373678449d5ad198de37b2de16ca862f5061749 100644 (file)
@@ -26,10 +26,10 @@ CU_pSuite register_geodetic_suite(void)
        }
 
        if (
-           (NULL == CU_add_test(pSuite, "test_signum()", test_signum))  ||
-           (NULL == CU_add_test(pSuite, "test_gbox_from_spherical_coordinates()", test_gbox_from_spherical_coordinates)) /* ||
-           (NULL == CU_add_test(pSuite, "test_gserialized_get_gbox_geocentric()", test_gserialized_get_gbox_geocentric)) ||
-           (NULL == CU_add_test(pSuite, "test_gbox_calculation()", test_gbox_calculation)) */
+               (NULL == CU_add_test(pSuite, "test_signum()", test_signum))  ||
+/*             (NULL == CU_add_test(pSuite, "test_gbox_from_spherical_coordinates()", test_gbox_from_spherical_coordinates))  ||*/
+               (NULL == CU_add_test(pSuite, "test_gserialized_get_gbox_geocentric()", test_gserialized_get_gbox_geocentric)) /* ||
+               (NULL == CU_add_test(pSuite, "test_gbox_calculation()", test_gbox_calculation)) */
        )
        {
                CU_cleanup_registry();
@@ -59,15 +59,15 @@ int clean_geodetic_suite(void)
 
 void test_signum(void)
 {
-    CU_ASSERT_EQUAL(signum(-5.0),-1);
-    CU_ASSERT_EQUAL(signum(5.0),1);
+       CU_ASSERT_EQUAL(signum(-5.0),-1);
+       CU_ASSERT_EQUAL(signum(5.0),1);
 }
 
 void test_gbox_from_spherical_coordinates(void)
 {
        double ll[64];
        GBOX *box = gbox_new(gflags(0, 0, 1));
-    GBOX *good;
+       GBOX *good;
        int rv;
        POINTARRAY *pa;
        ll[0] = -3.083333333333333333333333333333333;
@@ -87,7 +87,7 @@ void test_gbox_from_spherical_coordinates(void)
        CU_ASSERT_DOUBLE_EQUAL(box->zmin, good->zmin, 0.0001);
        CU_ASSERT_DOUBLE_EQUAL(box->zmax, good->zmax, 0.0001);
        lwfree(pa);
-    lwfree(good);
+       lwfree(good);
 
 
        ll[0] = -35.0;
@@ -107,7 +107,7 @@ void test_gbox_from_spherical_coordinates(void)
        CU_ASSERT_DOUBLE_EQUAL(box->zmin, good->zmin, 0.0001);
        CU_ASSERT_DOUBLE_EQUAL(box->zmax, good->zmax, 0.0001);
        lwfree(pa);
-    lwfree(good);
+       lwfree(good);
 
 
        ll[0] = -122.5;
@@ -118,60 +118,48 @@ void test_gbox_from_spherical_coordinates(void)
        pa = pointArray_construct((uchar*)ll, 0, 0, 2);
        rv = ptarray_calculate_gbox_geodetic(pa, box);
        good = gbox_from_string("GBOX((-0.29850766,-0.46856318,0.83146961),(-0.19629681,-0.29657213,0.93461892))");
-//  printf("\n%s\n", gbox_to_string(box));
-//  printf("%s\n", "(-0.29850766, -0.46856318, 0.83146961)  (-0.19629681, -0.29657213, 0.93461892)");
-       CU_ASSERT_DOUBLE_EQUAL(box->xmin, good->xmin, 0.0001);
-       CU_ASSERT_DOUBLE_EQUAL(box->xmax, good->xmax, 0.0001);
-       CU_ASSERT_DOUBLE_EQUAL(box->ymin, good->ymin, 0.0001);
-       CU_ASSERT_DOUBLE_EQUAL(box->ymax, good->ymax, 0.0001);
-       CU_ASSERT_DOUBLE_EQUAL(box->zmin, good->zmin, 0.0001);
-       CU_ASSERT_DOUBLE_EQUAL(box->zmax, good->zmax, 0.0001);
+       //printf("\n%s\n", gbox_to_string(box));
+       //printf("%s\n", "(-0.29850766, -0.46856318, 0.83146961)  (-0.19629681, -0.29657213, 0.93461892)");
+       CU_ASSERT_DOUBLE_EQUAL(box->xmin, good->xmin, 0.000001);
+       CU_ASSERT_DOUBLE_EQUAL(box->xmax, good->xmax, 0.000001);
+       CU_ASSERT_DOUBLE_EQUAL(box->ymin, good->ymin, 0.000001);
+       CU_ASSERT_DOUBLE_EQUAL(box->ymax, good->ymax, 0.000001);
+       CU_ASSERT_DOUBLE_EQUAL(box->zmin, good->zmin, 0.000001);
+       CU_ASSERT_DOUBLE_EQUAL(box->zmax, good->zmax, 0.000001);
        lwfree(pa);
-    lwfree(good);
+       lwfree(good);
 
        lwfree(box);
        
 }
 
+#include "cu_geodetic_data.h"
+
 void test_gserialized_get_gbox_geocentric(void)
 {
        LWGEOM *lwg;
        GSERIALIZED *g;
-       GBOX *gbox;
+       GBOX *gbox, *gbox_good;
        int i;
-
-       char wkt[][512] = { 
-               "POINT(45 45)",
-               "MULTILINESTRING((45 45, 45 45),(45 45, 45 45))",
-               "MULTILINESTRING((45 45, 45 45),(45 45, 45.5 45.5),(45 45, 46 46))",
-               "GEOMETRYCOLLECTION(MULTILINESTRING((45 45, 45 45),(45 45, 45.5 45.5),(45 45, 46 46)))",
-               "MULTIPOLYGON(((45 45, 45 45, 45 45, 45 45),(45 45, 45 45, 45 45, 45 45)))",
-               "LINESTRING(45 45, 45.1 45.1)",
-               "MULTIPOINT(45 45, 45.05 45.05, 45.1 45.1)"
-       };
-    
-    double xmin[] = {
-               0.707106781187,
-               0.707106781187,
-               0.694658370459,
-               0.694658370459,
-               0.707106781187,
-               0.705871570679,
-               0.705871570679
-       };
        
-    for ( i = 0; i < 7; i++ )
-    {
-               //printf("%s\n", wkt[i]);
-               lwg = lwgeom_from_ewkt(wkt[i], PARSER_CHECK_NONE);
+       for ( i = 0; i < gbox_data_length; i++ )
+       {
+//             if( i != 42 ) continue;
+               if( i != 20 ) continue;
+               printf("\n%s\n", gbox_data[2*i]);
+               printf("%s\n", gbox_data[2*i+1]);
+               lwg = lwgeom_from_ewkt(gbox_data[2*i], PARSER_CHECK_NONE);
+               gbox_good = gbox_from_string(gbox_data[2*i+1]);
                g = gserialized_from_lwgeom(lwg, 1, 0);
                g->flags = FLAGS_SET_GEODETIC(g->flags, 1);
                lwgeom_free(lwg);
                gbox = gserialized_calculate_gbox_geocentric(g);
-               //printf("%s\n", gbox_to_string(box, g->flags));
-               CU_ASSERT_DOUBLE_EQUAL(gbox->xmin, xmin[i], 0.00000001);
+               printf("%s\n", gbox_to_string(gbox));
+               printf("line %d: diff %.9g\n", i, fabs(gbox->xmin - gbox_good->xmin));
+               CU_ASSERT_DOUBLE_EQUAL(gbox->xmin, gbox_good->xmin, 0.000001);
                lwfree(g);
                lwfree(gbox);
+               lwfree(gbox_good);
        }
 
 }
diff --git a/liblwgeom/cunit/cu_geodetic_data.h b/liblwgeom/cunit/cu_geodetic_data.h
new file mode 100644 (file)
index 0000000..978efc2
--- /dev/null
@@ -0,0 +1,97 @@
+int gbox_data_length = 46;
+char gbox_data[][512] = { 
+"LINESTRING(-3.083333333333333333333333333333333 9.83333333333333333333333333333333,15.5 -5.25)",
+"GBOX((0.9595879536661512,-0.052998127820754914,-0.09150161866340238),(0.9949586928172913,0.2661172917357788,0.17078275740560678))",
+"LINESTRING(-35.0 52.5,50.0 60.0)",
+"GBOX((0.32139380484326974,-0.3491712110387923,0.7933533402912352),(0.49866816905678146,0.3830222215594891,0.9014764513830344))",
+"LINESTRING(-122.5 56.25,-123.5 69.166666)",
+"GBOX((-0.2985076686105858,-0.46856318207700426,0.8314696123025452),(-0.19629681530223578,-0.2965721369531419,0.9346189212108039))",
+"LINESTRING(-121.75 42.55,-122.35 43.25)",
+"GBOX((-0.38974385906936987,-0.6264438483522763,0.6762333461397154),(-0.3876552159203768,-0.6153242999306493,0.6851829903263591))",
+"LINESTRING(-3.083333333333333333333333333333333 9.83333333333333333333333333333333,15.5 -5.25)",
+"GBOX((0.9595879536661512,-0.052998127820754914,-0.09150161866340238),(0.9949586928172913,0.2661172917357788,0.17078275740560678))",
+"LINESTRING(86.85 9.85,105.5 -5.25)",
+"GBOX((-0.2661172917357788,0.9595879536661512,-0.09150161866340238),(0.054140158622265885,0.9949902364317366,0.17106936486110255))",
+"LINESTRING(-120.0 62.55,-120.0 62.55)",
+"GBOX((-0.23048718726773115,-0.39921551884135303,0.8874134470592832),(-0.23048718726773115,-0.39921551884135303,0.8874134470592832))",
+"LINESTRING(-135.0 40.0,45.0 -40.0)",
+"GBOX((-1.0,-1.0,-1.0),(1.0,1.0,1.0))",
+"LINESTRING(-120.0 62.55,60.0 73.25)",
+"GBOX((-0.23048718726773115,-0.39921551884135303,0.8874134470592832),(0.14409813406704472,0.2495852894799931,1.0))",
+"LINESTRING(-120.0 -62.55,60.0 -73.25)",
+"GBOX((-0.23048718726773115,-0.39921551884135303,-1.0),(0.14409813406704472,0.2495852894799931,-0.8874134470592832))",
+"LINESTRING(-120.0 20.0,-120.5 20.0)",
+"GBOX((-0.47693005443993386,-0.8137976813493738,0.3420201433256687),(-0.469846310392954,-0.8096665639208592,0.34202301827896614))",
+"LINESTRING(-120.0 45.0,-120.5 45.0)",
+"GBOX((-0.3588838181618333,-0.6123724356957946,0.7071067811865475),(-0.3535533905932736,-0.6092638222162746,0.7071101467680172))",
+"LINESTRING(-120.0 75.0,-120.5 75.0)",
+"GBOX((-0.13136059445438608,-0.2241438680420134,0.9659258262890683),(-0.12940952255126031,-0.22300603653796233,0.9659264422294181))",
+"LINESTRING(-120.0 -20.0,-120.5 -20.0)",
+"GBOX((-0.47693005443993386,-0.8137976813493738,-0.34202301827896603),(-0.469846310392954,-0.8096665639208592,-0.3420201433256687))",
+"LINESTRING(-120.0 -45.0,-120.5 -45.0)",
+"GBOX((-0.3588838181618333,-0.6123724356957946,-0.7071101467680172),(-0.3535533905932736,-0.6092638222162746,-0.7071067811865475))",
+"LINESTRING(-120.0 -75.0,-120.5 -75.0)",
+"GBOX((-0.13136059445438608,-0.2241438680420134,-0.9659264422294181),(-0.12940952255126031,-0.22300603653796233,-0.9659258262890683))",
+"LINESTRING(0.0 60.0,0.0 7.0)",
+"GBOX((0.5000000000000001,0.0,0.12186934340514748),(0.992546151641322,0.0,0.8660254037844386))",
+"LINESTRING(0.0 -60.0,0.0 -70.0)",
+"GBOX((0.3420201433256688,0.0,-0.9396926207859083),(0.5000000000000001,0.0,-0.8660254037844386))",
+"LINESTRING(180.0 60.0,180.0 70.0)",
+"GBOX((-0.5000000000000001,4.188538737676993E-17,0.8660254037844386),(-0.3420201433256688,6.123233995736767E-17,0.9396926207859083))",
+"LINESTRING(4.0 45.0,-4.0 45.0)",
+"GBOX((0.7053843046066397,-0.04932527561613236,0.7071067811865475),(0.7062439675293093,0.04932527561613236,0.7079685433184585))",
+"LINESTRING(-176.0 45.0,176.0 45.0)",
+"GBOX((-0.7053843046066397,-0.049325275616132515,-0.7079685433184585),(0.7062439675293093,0.04932527561613243,0.7071067811865475))",
+"LINESTRING(176.0 45.0,-176.0 45.0)",
+"GBOX((-0.7053843046066397,-0.04932527561613243,-0.7079685433184585),(0.7062439675293093,0.049325275616132515,0.7071067811865475))",
+"LINESTRING(-4.0 45.0,4.0 45.0)",
+"GBOX((0.7053843046066397,-0.04932527561613236,0.7071067811865475),(0.7062439675293093,0.04932527561613236,0.7079685433184585))",
+"LINESTRING(-45.0 60.0,135.0 72.0)",
+"GBOX((-0.21850801222441055,-0.3535533905932738,0.8660254037844386),(0.35355339059327384,0.21850801222441057,1.0))",
+"LINESTRING(-45.0 -60.0,135.0 -72.0)",
+"GBOX((-0.21850801222441055,-0.3535533905932738,-1.0),(0.35355339059327384,0.21850801222441057,-0.8660254037844386))",
+"LINESTRING(-15.0 3.5,15.0 -3.5)",
+"GBOX((0.9641241799135144,-0.2583362954111446,-0.06104853953485687),(0.9641241799135144,0.2583362954111446,0.06104853953485687))",
+"LINESTRING(75.0 3.5,105.0 -3.5)",
+"GBOX((-0.2583362954111447,0.9641241799135144,-0.06104853953485687),(0.2583362954111446,1.0,0.06104853953485687))",
+"LINESTRING(-75.0 3.5,-105.0 -3.5)",
+"GBOX((-0.2583362954111447,-1.0,-0.06104853953485687),(0.2583362954111446,-0.9641241799135144,0.06104853953485687))",
+"LINESTRING(-153.11560 24.70504,-9.15580 24.18317)",
+"GBOX((-0.8102844449894852,-0.5761590206406835,0.40965509098927283),(0.9006179133313287,-0.14515536715290223,0.8267171981124425))",
+"LINESTRING(-178.0 45.0,165.0 45.0)",
+"GBOX((-0.7066760308408345,-0.9967556114749435,-0.7110008644817356),(0.7077824677818997,0.18301270189221913,0.7071067811865475))",
+"LINESTRING(10.0 45.0,110.0 45.0)",
+"GBOX((-0.24184476264797528,0.12278780396897285,0.7071067811865475),(0.696364240320019,0.6644630243886748,0.8412050806713923))",
+"LINESTRING(10.0 -45.0,110.0 -45.0)",
+"GBOX((-0.24184476264797528,0.12278780396897285,-0.8412050806713923),(0.696364240320019,0.6644630243886748,-0.7071067811865475))",
+"LINESTRING(-10.0 45.0,-110.0 45.0)",
+"GBOX((-0.24184476264797528,-0.6644630243886748,0.7071067811865475),(0.696364240320019,-0.12278780396897285,0.8412050806713923))",
+"LINESTRING(160.0 25.0,-160.0 25.0)",
+"GBOX((-0.8516507396391466,-1.0,-0.4445129523522235),(0.8957724237724166,0.3099755192194448,0.42261826174069944))",
+"LINESTRING(170.0 35.0,-160.0 35.0)",
+"GBOX((-0.8067072841115989,-0.9986908105135698,-0.5869188447292516),(0.8112600906598508,0.14224425972292398,0.573576436351046))",
+"LINESTRING(-10.0 35.0,10.0 -35.0)",
+"GBOX((0.8067072841115988,-0.14224425972292404,-0.573576436351046),(0.8067072841115988,0.14224425972292404,0.573576436351046))",
+"LINESTRING(-80.0 25.0,-60.0 -25.0)",
+"GBOX((0.1573786956242627,-0.9472425401447112,-0.42261826174069944),(0.4531538935183251,-0.7848855672213958,0.42261826174069944))",
+"LINESTRING(-80.0 25.0,-60.0 -45.0)",
+"GBOX((0.1573786956242627,-0.9618448143567158,-0.7071067811865475),(0.35744468692115106,-0.6123724356957946,0.42261826174069944))",
+"LINESTRING(-120.0 70.0,60.0 70.0)",
+"GBOX((-0.17101007166283433,-0.29619813272602397,0.9396926207859083),(0.17101007166283444,0.2961981327260239,1.0))",
+"LINESTRING(-120.0 -70.0,60.0 -70.0)",
+"GBOX((-0.17101007166283433,-0.29619813272602397,-1.0),(0.17101007166283444,0.2961981327260239,-0.9396926207859083))",
+"LINESTRING(-112.0 45.0,-112.00166666666666666666666666667 45.0)",
+"GBOX((-0.2649059335238084,-0.6556179909708572,0.7071067811865475),(-0.26488686248158333,-0.655610285446987,0.7071067812239428))",
+"LINESTRING(-120.0 -5.0,60.0 80.0)",
+"GBOX((-0.49809734904587255,-0.862729915662821,-0.08715574274765817),(0.08682408883346522,0.15038373318043535,1.0))",
+"LINESTRING(165.0 10.0,-172.0 -5.0)",
+"GBOX((-0.9864997997699045,-0.1386435052934046,-0.08715574274765817),(0.9999918210489989,0.833398392064089,0.5526875047801408))",
+"LINESTRING(97.87714324162704 46.6879465040995,155.49353589912155 -68.93911854796522)",
+"GBOX((-0.4617028385042928,0.14906095261936342,-0.9331991042675769),(-0.09401197136406152,0.9212323166703043,0.7276284637592436))",
+"LINESTRING(-77.90029319006709 -20.61989357708765,-29.776541043747443 88.24497900223159)",
+"GBOX((0.026582505574020924,-0.9759756839408249,-0.3521666349428651),(0.21905192975441434,-0.015209494233135086,0.9995309108189598))",
+"LINESTRING(12.21419896647646 -2.2758177391540926,149.7713684095024 13.210117902931728)",
+"GBOX((-0.8411600283798623,0.2114001371958298,-0.03971006891196685),(0.9765925928556858,0.9610575090405382,0.2934426691118194))",
+"LINESTRING(-49.891199414628915 66.72545480471234,-39.418865490450656 -89.97504625275525)",
+"GBOX((3.364537771200467E-4,-0.7647039984150772,-0.9999999051589669),(0.6443817199937109,-2.7655182725940225E-4,0.9186220197585023))",
+};
\ No newline at end of file
index aa91fff2ee88b0e1529c255898f41a4fc04d9560..df523d0cf2626713dcecfe7eedabdac5cd611388 100644 (file)
@@ -150,22 +150,12 @@ int edge_point_on_plane(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p)
 /**
 * True if the longitude of p is within the range of the longitude of the ends of e
 */
-int edge_contains_longitude(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p, int flipped_longitude)
+int edge_contains_longitude(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p)
 {
-       if( flipped_longitude )
-       {
-               if( p.lon > e.start.lon && p.lon > e.end.lon )
-                       return LW_TRUE;
-               if( p.lon < e.start.lon && p.lon < e.end.lon )
-                       return LW_TRUE;
-       }
-       else
-       {
-               if( e.start.lon < p.lon && p.lon < e.end.lon )
-                       return LW_TRUE;
-               if( e.end.lon < p.lon && p.lon < e.start.lon )
-                       return LW_TRUE;
-       }
+       if( e.start.lon < p.lon && p.lon < e.end.lon )
+               return LW_TRUE;
+       if( e.end.lon < p.lon && p.lon < e.start.lon )
+               return LW_TRUE;
        return LW_FALSE;
 }
 
@@ -176,7 +166,7 @@ int edge_contains_longitude(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p, int flipped_l
 double sphere_distance(GEOGRAPHIC_POINT s, GEOGRAPHIC_POINT e)
 {
        double latS = s.lat;
-       double latE = e.lon;
+       double latE = e.lat;
        double dlng = e.lon - s.lon;
        double a1 = pow(cos(latE) * sin(dlng), 2.0);
        double a2 = pow(cos(latS) * sin(latE) - sin(latS) * cos(latE) * cos(dlng), 2.0);
@@ -203,9 +193,9 @@ double sphere_direction(GEOGRAPHIC_POINT s, GEOGRAPHIC_POINT e)
 * Returns true if the point p is on the minor edge defined by the
 * end points of e.
 */
-int edge_contains_point(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p, int flipped_longitude)
+int edge_contains_point(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p)
 {
-       if( edge_point_on_plane(e, p) && edge_contains_longitude(e, p, flipped_longitude) )
+       if( edge_point_on_plane(e, p) && edge_contains_longitude(e, p) )
                return LW_TRUE;
        return LW_FALSE;
 }
@@ -328,17 +318,9 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
        g = e;
 
     LWDEBUG(4, "entered function");
+       LWDEBUGF(4, "edge length: %.8g", distance);
     LWDEBUGF(4, "edge values: (%.6g %.6g, %.6g %.6g)", g.start.lon, g.start.lat, g.end.lon, g.end.lat);
 
-       /* Initialize box with the start and end points of the edge. */
-       geog2cart(g.start, &start);
-       geog2cart(g.end, &end);
-       gbox->xmin = FP_MIN(start.x, end.x);
-       gbox->ymin = FP_MIN(start.y, end.y);
-       gbox->zmin = FP_MIN(start.z, end.z);
-       gbox->xmax = FP_MAX(start.x, end.x);
-       gbox->ymax = FP_MAX(start.y, end.y);
-       gbox->zmax = FP_MAX(start.z, end.z);
 
     LWDEBUGF(4, "initialized gbox: %s", gbox_to_string(gbox));
 
@@ -346,6 +328,14 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
        if( FP_IS_ZERO(distance) )
        {
         LWDEBUG(4, "edge is zero length. returning");
+               geog2cart(g.start, &start);
+               geog2cart(g.end, &end);
+               gbox->xmin = FP_MIN(start.x, end.x);
+               gbox->ymin = FP_MIN(start.y, end.y);
+               gbox->zmin = FP_MIN(start.z, end.z);
+               gbox->xmax = FP_MAX(start.x, end.x);
+               gbox->ymax = FP_MAX(start.y, end.y);
+               gbox->zmax = FP_MAX(start.z, end.z);
                return G_SUCCESS;
        }
 
@@ -407,6 +397,16 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
                        g.end.lon += M_PI;
        }
     LWDEBUGF(4, "edge values: (%.6g %.6g, %.6g %.6g)", g.start.lon, g.start.lat, g.end.lon, g.end.lat);
+
+       /* Initialize box with the start and end points of the edge. */
+       geog2cart(g.start, &start);
+       geog2cart(g.end, &end);
+       gbox->xmin = FP_MIN(start.x, end.x);
+       gbox->ymin = FP_MIN(start.y, end.y);
+       gbox->zmin = FP_MIN(start.z, end.z);
+       gbox->xmax = FP_MAX(start.x, end.x);
+       gbox->ymax = FP_MAX(start.y, end.y);
+       gbox->zmax = FP_MAX(start.z, end.z);
        
        /* Check for pole crossings. */
        if( FP_EQUALS(deltaLongitude, M_PI) ) 
@@ -433,7 +433,7 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
                clairaut_cartesian(start, end, LW_FALSE, &vT2);
         LWDEBUGF(4, "vT1 == GPOINT(%.6g %.6g) ", vT1.lat, vT1.lon);
         LWDEBUGF(4, "vT2 == GPOINT(%.6g %.6g) ", vT2.lat, vT2.lon);
-               if( edge_contains_point(g, vT1, flipped_longitude) )
+               if( edge_contains_point(g, vT1) )
                {
                        geog2cart(vT1, &p);
             LWDEBUGF(4, "p == POINT(%.8g %.8g %.8g)", p.x, p.y, p.z);
@@ -441,7 +441,7 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
             LWDEBUG(4, "edge contained vT1");
             LWDEBUGF(4, "gbox: %s", gbox_to_string(gbox));
                }
-               else if ( edge_contains_point(g, vT2, flipped_longitude) )
+               else if ( edge_contains_point(g, vT2) )
                {
                        geog2cart(vT2, &p);
             LWDEBUGF(4, "p == POINT(%.8g %.8g %.8g)", p.x, p.y, p.z);
@@ -478,7 +478,7 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
         vT1.lon = M_PI;
         vT2.lon = -1.0 * M_PI;
     }
-    if( edge_contains_point(g, vT1, flipped_longitude) )
+    if( edge_contains_point(g, vT1) )
     {
                geog2cart(vT1, &p);
         LWDEBUGF(4, "p == POINT(%.8g %.8g %.8g)", p.x, p.y, p.z);
@@ -486,7 +486,7 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
         LWDEBUG(4, "edge contained vT1");
         LWDEBUGF(4, "gbox: %s", gbox_to_string(gbox));
     }
-       else if ( edge_contains_point(g, vT2, flipped_longitude) )
+       else if ( edge_contains_point(g, vT2) )
        {
                geog2cart(vT2, &p);
         LWDEBUGF(4, "p == POINT(%.8g %.8g %.8g)", p.x, p.y, p.z);
@@ -522,7 +522,7 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
         vT1.lon = M_PI;
         vT2.lon = -1.0 * M_PI;
     }
-    if( edge_contains_point(g, vT1, flipped_longitude) )
+    if( edge_contains_point(g, vT1) )
     {
                geog2cart(vT1, &p);
         LWDEBUGF(4, "p == POINT(%.8g %.8g %.8g)", p.x, p.y, p.z);
@@ -530,7 +530,7 @@ int edge_calculate_gbox(GEOGRAPHIC_EDGE e, GBOX *gbox)
         LWDEBUG(4, "edge contained vT1");
         LWDEBUGF(4, "gbox: %s", gbox_to_string(gbox));
     }
-       else if ( edge_contains_point(g, vT2, flipped_longitude) )
+       else if ( edge_contains_point(g, vT2) )
        {
                geog2cart(vT2, &p);
         LWDEBUGF(4, "p == POINT(%.8g %.8g %.8g)", p.x, p.y, p.z);
index ff231bc92d7b4109be5a50fec560068fce511a02..eb8dade36cd540baaf77c556991d630a8896e916 100644 (file)
@@ -46,8 +46,8 @@ void robust_cross_product(GEOGRAPHIC_POINT p, GEOGRAPHIC_POINT q, POINT3D *a);
 void x_to_z(POINT3D *p);
 void y_to_z(POINT3D *p);
 int edge_point_on_plane(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p);
-int edge_contains_longitude(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p, int flipped_longitude);
-int edge_contains_point(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p, int flipped_longitude);
+int edge_contains_longitude(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p);
+int edge_contains_point(GEOGRAPHIC_EDGE e, GEOGRAPHIC_POINT p);
 double z_to_latitude(double z);
 int clairaut_cartesian(POINT3D start, POINT3D end, int top, GEOGRAPHIC_POINT *g);
 int clairaut_geographic(GEOGRAPHIC_POINT start, GEOGRAPHIC_POINT end, int top, GEOGRAPHIC_POINT *g);