aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/geo_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/geo_ops.c')
-rw-r--r--src/backend/utils/adt/geo_ops.c144
1 files changed, 72 insertions, 72 deletions
diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c
index 12fea90436c..fd0278e7b87 100644
--- a/src/backend/utils/adt/geo_ops.c
+++ b/src/backend/utils/adt/geo_ops.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.16 1997/08/21 23:56:41 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.17 1997/09/05 18:11:14 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -158,7 +158,7 @@ static int pair_decode(char *str, float8 *x, float8 *y, char **s)
if (*str != RDELIM) return(FALSE);
str++;
while (isspace( *str)) str++;
- };
+ }
if (s != NULL) *s = str;
return(TRUE);
@@ -196,8 +196,8 @@ static int path_decode(int opentype, int npts, char *str, int *isopen, char **ss
} else if (strrchr( s, LDELIM) == s) {
depth++;
s = cp;
- };
- };
+ }
+ }
for (i = 0; i < npts; i++) {
if (! pair_decode( s, &(p->x), &(p->y), &s))
@@ -205,7 +205,7 @@ static int path_decode(int opentype, int npts, char *str, int *isopen, char **ss
if (*s == DELIM) s++;
p++;
- };
+ }
while (depth > 0) {
if ((*s == RDELIM)
@@ -215,8 +215,8 @@ static int path_decode(int opentype, int npts, char *str, int *isopen, char **ss
while (isspace( *s)) s++;
} else {
return(FALSE);
- };
- };
+ }
+ }
*ss = s;
return(TRUE);
@@ -239,7 +239,7 @@ static char *path_encode( bool closed, int npts, Point *pt)
break;
default:
break;
- };
+ }
for (i = 0; i < npts; i++) {
*cp++ = LDELIM;
@@ -249,7 +249,7 @@ static char *path_encode( bool closed, int npts, Point *pt)
*cp++ = RDELIM;
*cp++ = DELIM;
pt++;
- };
+ }
cp--;
switch (closed) {
case TRUE:
@@ -260,7 +260,7 @@ static char *path_encode( bool closed, int npts, Point *pt)
break;
default:
break;
- };
+ }
*cp = '\0';
return(result);
@@ -280,7 +280,7 @@ static int pair_count(char *s, char delim)
while ((s = strchr( s, delim)) != NULL) {
ndelim++;
s++;
- };
+ }
return((ndelim % 2)? ((ndelim+1)/2): -1);
}
@@ -320,12 +320,12 @@ BOX *box_in(char *str)
x = box->high.x;
box->high.x = box->low.x;
box->low.x = x;
- };
+ }
if (box->high.y < box->low.y) {
y = box->high.y;
box->high.y = box->low.y;
box->low.y = y;
- };
+ }
return(box);
} /* box_in() */
@@ -361,14 +361,14 @@ static BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2)
} else {
result->high.x = x2;
result->low.x = x1;
- };
+ }
if (y1 > y2) {
result->high.y = y1;
result->low.y = y2;
} else {
result->high.y = y2;
result->low.y = y1;
- };
+ }
return(result);
}
@@ -739,7 +739,7 @@ printf( "line_construct_pp- line is neither vertical nor horizontal (diffs x=%.*
digits8, (pt2->x - pt1->x), digits8, (pt2->y - pt1->y));
#endif
result->m = result->A;
- };
+ }
return(result);
} /* line_construct_pp() */
@@ -760,7 +760,7 @@ static bool line_parallel(LINE *l1, LINE *l2)
#endif
if (FPzero(l1->B)) {
return(FPzero(l2->B));
- };
+ }
return(FPeq(l2->A, l1->A*(l2->B / l1->B)));
} /* line_parallel() */
@@ -778,7 +778,7 @@ bool line_perp(LINE *l1, LINE *l2)
return( FPzero(l2->B) );
} else if (FPzero(l1->B)) {
return( FPzero(l2->A) );
- };
+ }
return( FPeq(((l1->A * l2->B) / (l1->B * l2->A)), -1.0) );
} /* line_perp() */
@@ -889,7 +889,7 @@ line_interpt(LINE *l1, LINE *l2)
#endif
x = (l1->C - l2->C) / (l2->A - l1->A);
y = (l1->A * x + l1->C);
- };
+ }
result = point_construct(x, y);
#ifdef GEODEBUG
@@ -946,7 +946,7 @@ PATH *path_in(char *str)
if ((*s == LDELIM) && (strrchr( s, LDELIM) == s)) {
s++;
depth++;
- };
+ }
size = offsetof(PATH, p[0]) + (sizeof(path->p[0]) * npts);
path = PALLOC(size);
@@ -1153,7 +1153,7 @@ double *path_distance(PATH *p1, PATH *p2)
min = tmp;
} else {
PFREE(tmp);
- };
+ }
}
return(min);
@@ -1593,12 +1593,12 @@ lseg_interpt(LSEG *l1, LSEG *l2)
|| (FPeq( l1->p[1].x, l2->p[1].x) && FPeq( l1->p[1].y, l2->p[1].y))) {
result->x = l1->p[1].x;
result->y = l1->p[1].y;
- };
+ }
} else {
PFREE(result);
result = NULL;
- };
- };
+ }
+ }
PFREE(tmp1);
PFREE(tmp2);
@@ -1653,7 +1653,7 @@ double *dist_ps(Point *pt, LSEG *lseg)
(lseg->p[1].x - lseg->p[0].x);
#endif
m = ((lseg->p[0].y - lseg->p[1].y) / (lseg->p[1].x - lseg->p[0].x));
- };
+ }
ln = line_construct_pm(pt, m);
#ifdef GEODEBUG
@@ -1680,7 +1680,7 @@ printf( "dist_ps- distance is %f to intersection point is (%f,%f)\n",
tmpdist = point_distance(pt, &lseg->p[1]);
if (*tmpdist < *result) *result = *tmpdist;
PFREE (tmpdist);
- };
+ }
if (ip != NULL) PFREE(ip);
PFREE(ln);
@@ -1756,8 +1756,8 @@ double *dist_sl(LSEG *lseg, LINE *line)
result = d2;
} else {
PFREE( d2);
- };
- };
+ }
+ }
return(result);
}
@@ -1818,7 +1818,7 @@ printf( "dist_cpoly- center inside of polygon\n");
*result = 0;
return(result);
- };
+ }
/* initialize distance with segment between first and last points */
seg.p[0].x = poly->p[0].x;
@@ -1842,7 +1842,7 @@ printf( "dist_cpoly- segment %d distance is %f\n", (i+1), *d);
#endif
if (*d < *result) *result = *d;
PFREE(d);
- };
+ }
*result -= circle->radius;
if (*result < 0) *result = 0;
@@ -1883,8 +1883,8 @@ printf( "interpt_sl- intersection point is on segment\n");
} else {
PFREE(p);
p = NULL;
- };
- };
+ }
+ }
PFREE(tmp);
return(p);
@@ -2232,12 +2232,12 @@ static void make_bound_box(POLYGON *poly)
if (poly->p[i].x > x2) x2 = poly->p[i].x;
if (poly->p[i].y < y1) y1 = poly->p[i].y;
if (poly->p[i].y > y2) y2 = poly->p[i].y;
- };
+ }
box_fill(&(poly->boundbox), x1, x2, y1, y2);
} else {
elog (WARN, "Unable to create bounding box for empty polygon", NULL);
- };
+ }
}
/*------------------------------------------------------------------
@@ -2354,7 +2354,7 @@ bool poly_same(POLYGON *polya, POLYGON *polyb)
if ((polya->p[i].x != polyb->p[i].x)
|| (polya->p[i].y != polyb->p[i].y))
return FALSE;
- };
+ }
return TRUE;
#endif
} /* poly_same() */
@@ -2395,18 +2395,18 @@ poly_contain(POLYGON *polya, POLYGON *polyb)
printf( "poly_contain- point (%f,%f) not in polygon\n", polyb->p[i].x, polyb->p[i].y);
#endif
return(FALSE);
- };
- };
+ }
+ }
for (i = 0; i < polya->npts; i++) {
if (point_inside(&(polya->p[i]), polyb->npts, &(polyb->p[0])) == 1) {
#if GEODEBUG
printf( "poly_contain- point (%f,%f) in polygon\n", polya->p[i].x, polya->p[i].y);
#endif
return(FALSE);
- };
- };
+ }
+ }
return(TRUE);
- };
+ }
#if GEODEBUG
printf( "poly_contain- bound box ((%f,%f),(%f,%f)) not inside ((%f,%f),(%f,%f))\n",
polyb->boundbox.low.x,polyb->boundbox.low.y,polyb->boundbox.high.x,polyb->boundbox.high.y,
@@ -2691,11 +2691,11 @@ path_add(PATH *p1, PATH *p2)
for (i=0; i<p1->npts; i++) {
result->p[i].x = p1->p[i].x;
result->p[i].y = p1->p[i].y;
- };
+ }
for (i=0; i<p2->npts; i++) {
result->p[i+p1->npts].x = p2->p[i].x;
result->p[i+p1->npts].y = p2->p[i].y;
- };
+ }
return(result);
} /* path_add() */
@@ -2717,7 +2717,7 @@ path_add_pt(PATH *path, Point *point)
for (i=0; i<path->npts; i++) {
result->p[i].x += point->x;
result->p[i].y += point->y;
- };
+ }
return(result);
} /* path_add_pt() */
@@ -2736,7 +2736,7 @@ path_sub_pt(PATH *path, Point *point)
for (i=0; i<path->npts; i++) {
result->p[i].x -= point->x;
result->p[i].y -= point->y;
- };
+ }
return(result);
} /* path_sub_pt() */
@@ -2762,7 +2762,7 @@ path_mul_pt(PATH *path, Point *point)
result->p[i].x = p->x;
result->p[i].y = p->y;
PFREE(p);
- };
+ }
return(result);
} /* path_mul_pt() */
@@ -2784,7 +2784,7 @@ path_div_pt(PATH *path, Point *point)
result->p[i].x = p->x;
result->p[i].y = p->y;
PFREE(p);
- };
+ }
return(result);
} /* path_div_pt() */
@@ -2846,7 +2846,7 @@ POLYGON *path_poly(PATH *path)
for (i=0; i<path->npts; i++) {
poly->p[i].x = path->p[i].x;
poly->p[i].y = path->p[i].y;
- };
+ }
make_bound_box(poly);
@@ -2886,7 +2886,7 @@ PATH
for (i=0; i<result->npts; i++) {
result->p[i].x = path->p[i+1].x;
result->p[i].y = path->p[i+1].y;
- };
+ }
return(result);
} /* upgradepath() */
@@ -2932,7 +2932,7 @@ poly_center(POLYGON *poly)
} else {
result = NULL;
- };
+ }
return(result);
} /* poly_center() */
@@ -3006,7 +3006,7 @@ poly_path(POLYGON *poly)
for (i=0; i<poly->npts; i++) {
path->p[i].x = poly->p[i].x;
path->p[i].y = poly->p[i].y;
- };
+ }
return(path);
} /* poly_path() */
@@ -3039,17 +3039,17 @@ POLYGON
for (i=0; i<n2; i++) {
result->p[2*i].x = poly->p[i].x; /* even indices */
result->p[2*i+1].x = poly->p[i].y; /* odd indices */
- };
+ }
if ((ii = ((poly->npts % 2)? 1: 0))) {
result->p[poly->npts-1].x = poly->p[n2].x;
result->p[0].y = poly->p[n2].y;
- };
+ }
for (i=0; i<n2; i++) {
result->p[2*i+ii].y = poly->p[i+n2+ii].x; /* even (+offset) indices */
result->p[2*i+ii+1].y = poly->p[i+n2+ii].y; /* odd (+offset) indices */
- };
+ }
return(result);
} /* upgradepoly() */
@@ -3079,17 +3079,17 @@ POLYGON
for (i=0; i<n2; i++) {
result->p[i].x = poly->p[2*i].x; /* even indices */
result->p[i].y = poly->p[2*i+1].x; /* odd indices */
- };
+ }
if ((ii = ((poly->npts % 2)? 1: 0))) {
result->p[n2].x = poly->p[poly->npts-1].x;
result->p[n2].y = poly->p[0].y;
- };
+ }
for (i=0; i<n2; i++) {
result->p[i+n2+ii].x = poly->p[2*i+ii].y; /* even (+offset) indices */
result->p[i+n2+ii].y = poly->p[2*i+ii+1].y; /* odd (+offset) indices */
- };
+ }
return(result);
} /* revertpoly() */
@@ -3131,8 +3131,8 @@ CIRCLE *circle_in(char *str)
while (isspace( *cp)) cp++;
if (*cp == LDELIM) {
s = cp;
- };
- };
+ }
+ }
if (! pair_decode( s, &circle->center.x, &circle->center.y, &s))
elog (WARN, "Bad circle external representation '%s'",str);
@@ -3151,8 +3151,8 @@ CIRCLE *circle_in(char *str)
while (isspace( *s)) s++;
} else {
elog (WARN, "Bad circle external representation '%s'",str);
- };
- };
+ }
+ }
if (*s != '\0')
elog (WARN, "Bad circle external representation '%s'",str);
@@ -3628,7 +3628,7 @@ POLYGON *circle_poly(int npts, CIRCLE *circle)
angle = i*(2*PI/npts);
poly->p[i].x = circle->center.x - (circle->radius*cos(angle));
poly->p[i].y = circle->center.y + (circle->radius*sin(angle));
- };
+ }
make_bound_box(poly);
@@ -3660,13 +3660,13 @@ CIRCLE *poly_circle(POLYGON *poly)
for (i=0;i<poly->npts;i++) {
circle->center.x += poly->p[i].x;
circle->center.y += poly->p[i].y;
- };
+ }
circle->center.x /= poly->npts;
circle->center.y /= poly->npts;
for (i=0;i<poly->npts;i++) {
circle->radius += point_dt( &poly->p[i], &circle->center);
- };
+ }
circle->radius /= poly->npts;
if (FPzero(circle->radius))
@@ -3762,8 +3762,8 @@ lseg_crossing( double x, double y, double px, double py)
} else { /* x < 0 */
if (FPzero( py)) return(FPlt( px, 0)? 0 : HIT_IT);
return(0);
- };
- };
+ }
+ }
/* Now we know y != 0; set sgn to sign of y */
sgn = (FPgt( y, 0)? 1 : -1);
@@ -3779,7 +3779,7 @@ lseg_crossing( double x, double y, double px, double py)
z = (x-px) * y - (y-py) * x;
if (FPzero( z)) return(HIT_IT);
return( FPgt( (sgn*z), 0)? 0 : 2 * sgn);
- };
+ }
} /* lseg_crossing() */
@@ -3802,8 +3802,8 @@ plist_same(int npts, Point p1[], Point p2[])
printf( "plist_same- %d failed forward match with %d\n", j, ii);
#endif
break;
- };
- };
+ }
+ }
#ifdef GEODEBUG
printf( "plist_same- ii = %d/%d after forward match\n", ii, npts);
#endif
@@ -3819,15 +3819,15 @@ printf( "plist_same- ii = %d/%d after forward match\n", ii, npts);
printf( "plist_same- %d failed reverse match with %d\n", j, ii);
#endif
break;
- };
- };
+ }
+ }
#ifdef GEODEBUG
printf( "plist_same- ii = %d/%d after reverse match\n", ii, npts);
#endif
if (ii == npts)
return(TRUE);
- };
- };
+ }
+ }
return(FALSE);
} /* plist_same() */