[postgis-tickets] r17436 - Format lwlinearreferencing.c

Darafei komzpa at gmail.com
Tue May 14 12:43:47 PDT 2019


Author: komzpa
Date: 2019-05-14 12:43:46 -0700 (Tue, 14 May 2019)
New Revision: 17436

Modified:
   trunk/liblwgeom/lwlinearreferencing.c
Log:
Format lwlinearreferencing.c

Closes #3163


Modified: trunk/liblwgeom/lwlinearreferencing.c
===================================================================
--- trunk/liblwgeom/lwlinearreferencing.c	2019-05-09 16:14:36 UTC (rev 17435)
+++ trunk/liblwgeom/lwlinearreferencing.c	2019-05-14 19:43:46 UTC (rev 17436)
@@ -35,16 +35,16 @@
 	double mprop;
 
 	/* M is out of range, no new point generated. */
-	if ( (m < FP_MIN(m1,m2)) || (m > FP_MAX(m1,m2)) )
+	if ((m < FP_MIN(m1, m2)) || (m > FP_MAX(m1, m2)))
 	{
 		return LW_FALSE;
 	}
 
-	if( m1 == m2 )
+	if (m1 == m2)
 	{
 		/* Degenerate case: same M on both points.
 		   If they are the same point we just return one of them. */
-		if ( p4d_same(p1,p2) )
+		if (p4d_same(p1, p2))
 		{
 			*pn = *p1;
 			return LW_TRUE;
@@ -64,7 +64,7 @@
 	pn->m = m;
 
 	/* Offset to the left or right, if necessary. */
-	if ( offset != 0.0 )
+	if (offset != 0.0)
 	{
 		double theta = atan2(p2->y - p1->y, p2->x - p1->x);
 		pn->x -= sin(theta) * offset;
@@ -74,8 +74,7 @@
 	return LW_TRUE;
 }
 
-
-static POINTARRAY*
+static POINTARRAY *
 ptarray_locate_along(const POINTARRAY *pa, double m, double offset)
 {
 	uint32_t i;
@@ -83,20 +82,21 @@
 	POINTARRAY *dpa = NULL;
 
 	/* Can't do anything with degenerate point arrays */
-	if ( ! pa || pa->npoints < 2 ) return NULL;
+	if (!pa || pa->npoints < 2)
+		return NULL;
 
 	/* Walk through each segment in the point array */
-	for ( i = 1; i < pa->npoints; i++ )
+	for (i = 1; i < pa->npoints; i++)
 	{
-		getPoint4d_p(pa, i-1, &p1);
+		getPoint4d_p(pa, i - 1, &p1);
 		getPoint4d_p(pa, i, &p2);
 
 		/* No derived point? Move to next segment. */
-		if ( segment_locate_along(&p1, &p2, m, offset, &pn) == LW_FALSE )
+		if (segment_locate_along(&p1, &p2, m, offset, &pn) == LW_FALSE)
 			continue;
 
 		/* No pointarray, make a fresh one */
-		if ( dpa == NULL )
+		if (dpa == NULL)
 			dpa = ptarray_construct_empty(ptarray_has_z(pa), ptarray_has_m(pa), 8);
 
 		/* Add our new point to the array */
@@ -106,7 +106,7 @@
 	return dpa;
 }
 
-static LWMPOINT*
+static LWMPOINT *
 lwline_locate_along(const LWLINE *lwline, double m, double offset)
 {
 	POINTARRAY *opa = NULL;
@@ -115,7 +115,8 @@
 	int hasz, hasm, srid;
 
 	/* Return degenerates upwards */
-	if ( ! lwline ) return NULL;
+	if (!lwline)
+		return NULL;
 
 	/* Create empty return shell */
 	srid = lwgeom_get_srid(lwg);
@@ -122,7 +123,7 @@
 	hasz = lwgeom_has_z(lwg);
 	hasm = lwgeom_has_m(lwg);
 
-	if ( hasm )
+	if (hasm)
 	{
 		/* Find points along */
 		opa = ptarray_locate_along(lwline->points, m, offset);
@@ -135,7 +136,7 @@
 	}
 
 	/* Return NULL as EMPTY */
-	if ( ! opa )
+	if (!opa)
 		return lwmpoint_construct_empty(srid, hasz, hasm);
 
 	/* Convert pointarray into a multipoint */
@@ -144,7 +145,7 @@
 	return mp;
 }
 
-static LWMPOINT*
+static LWMPOINT *
 lwmline_locate_along(const LWMLINE *lwmline, double m, double offset)
 {
 	LWMPOINT *lwmpoint = NULL;
@@ -152,20 +153,21 @@
 	uint32_t i, j;
 
 	/* Return degenerates upwards */
-	if ( (!lwmline) || (lwmline->ngeoms < 1) ) return NULL;
+	if ((!lwmline) || (lwmline->ngeoms < 1))
+		return NULL;
 
 	/* Construct return */
 	lwmpoint = lwmpoint_construct_empty(lwgeom_get_srid(lwg), lwgeom_has_z(lwg), lwgeom_has_m(lwg));
 
 	/* Locate along each sub-line */
-	for ( i = 0; i < lwmline->ngeoms; i++ )
+	for (i = 0; i < lwmline->ngeoms; i++)
 	{
 		LWMPOINT *along = lwline_locate_along(lwmline->geoms[i], m, offset);
-		if ( along )
+		if (along)
 		{
-			if ( ! lwgeom_is_empty((LWGEOM*)along) )
+			if (!lwgeom_is_empty((LWGEOM *)along))
 			{
-				for ( j = 0; j < along->ngeoms; j++ )
+				for (j = 0; j < along->ngeoms; j++)
 				{
 					lwmpoint_add_lwpoint(lwmpoint, along->geoms[j]);
 				}
@@ -178,13 +180,13 @@
 	return lwmpoint;
 }
 
-static LWMPOINT*
+static LWMPOINT *
 lwpoint_locate_along(const LWPOINT *lwpoint, double m, __attribute__((__unused__)) double offset)
 {
 	double point_m = lwpoint_get_m(lwpoint);
 	LWGEOM *lwg = lwpoint_as_lwgeom(lwpoint);
 	LWMPOINT *r = lwmpoint_construct_empty(lwgeom_get_srid(lwg), lwgeom_has_z(lwg), lwgeom_has_m(lwg));
-	if ( FP_EQUALS(m, point_m) )
+	if (FP_EQUALS(m, point_m))
 	{
 		lwmpoint_add_lwpoint(r, lwpoint_clone(lwpoint));
 	}
@@ -191,7 +193,7 @@
 	return r;
 }
 
-static LWMPOINT*
+static LWMPOINT *
 lwmpoint_locate_along(const LWMPOINT *lwin, double m, __attribute__((__unused__)) double offset)
 {
 	LWGEOM *lwg = lwmpoint_as_lwgeom(lwin);
@@ -201,10 +203,10 @@
 	/* Construct return */
 	lwout = lwmpoint_construct_empty(lwgeom_get_srid(lwg), lwgeom_has_z(lwg), lwgeom_has_m(lwg));
 
-	for ( i = 0; i < lwin->ngeoms; i++ )
+	for (i = 0; i < lwin->ngeoms; i++)
 	{
 		double point_m = lwpoint_get_m(lwin->geoms[i]);
-		if ( FP_EQUALS(m, point_m) )
+		if (FP_EQUALS(m, point_m))
 		{
 			lwmpoint_add_lwpoint(lwout, lwpoint_clone(lwin->geoms[i]));
 		}
@@ -213,29 +215,30 @@
 	return lwout;
 }
 
-LWGEOM*
+LWGEOM *
 lwgeom_locate_along(const LWGEOM *lwin, double m, double offset)
 {
-	if ( ! lwin ) return NULL;
+	if (!lwin)
+		return NULL;
 
-	if ( ! lwgeom_has_m(lwin) )
+	if (!lwgeom_has_m(lwin))
 		lwerror("Input geometry does not have a measure dimension");
 
 	switch (lwin->type)
 	{
 	case POINTTYPE:
-		return (LWGEOM*)lwpoint_locate_along((LWPOINT*)lwin, m, offset);
+		return (LWGEOM *)lwpoint_locate_along((LWPOINT *)lwin, m, offset);
 	case MULTIPOINTTYPE:
-		return (LWGEOM*)lwmpoint_locate_along((LWMPOINT*)lwin, m, offset);
+		return (LWGEOM *)lwmpoint_locate_along((LWMPOINT *)lwin, m, offset);
 	case LINETYPE:
-		return (LWGEOM*)lwline_locate_along((LWLINE*)lwin, m, offset);
+		return (LWGEOM *)lwline_locate_along((LWLINE *)lwin, m, offset);
 	case MULTILINETYPE:
-		return (LWGEOM*)lwmline_locate_along((LWMLINE*)lwin, m, offset);
+		return (LWGEOM *)lwmline_locate_along((LWMLINE *)lwin, m, offset);
 	/* Only line types supported right now */
 	/* TO DO: CurveString, CompoundCurve, MultiCurve */
 	/* TO DO: Point, MultiPoint */
 	default:
-		lwerror("Only linear geometries are supported, %s provided.",lwtype_name(lwin->type));
+		lwerror("Only linear geometries are supported, %s provided.", lwtype_name(lwin->type));
 		return NULL;
 	}
 	return NULL;
@@ -242,12 +245,12 @@
 }
 
 /**
-* Given a POINT4D and an ordinate number, return
-* the value of the ordinate.
-* @param p input point
-* @param ordinate number (1=x, 2=y, 3=z, 4=m)
-* @return d value at that ordinate
-*/
+ * Given a POINT4D and an ordinate number, return
+ * the value of the ordinate.
+ * @param p input point
+ * @param ordinate number (1=x, 2=y, 3=z, 4=m)
+ * @return d value at that ordinate
+ */
 inline double
 lwpoint_get_ordinate(const POINT4D *p, char ordinate)
 {
@@ -273,9 +276,9 @@
 }
 
 /**
-* Given a point, ordinate number and value, set that ordinate on the
-* point.
-*/
+ * Given a point, ordinate number and value, set that ordinate on the
+ * point.
+ */
 inline void
 lwpoint_set_ordinate(POINT4D *p, char ordinate, double value)
 {
@@ -285,7 +288,7 @@
 		return;
 	}
 
-	switch ( ordinate )
+	switch (ordinate)
 	{
 	case 'X':
 		p->x = value;
@@ -305,10 +308,10 @@
 }
 
 /**
-* Given two points, a dimensionality, an ordinate, and an interpolation value
-* generate a new point that is proportionally between the input points,
-* using the values in the provided dimension as the scaling factors.
-*/
+ * Given two points, a dimensionality, an ordinate, and an interpolation value
+ * generate a new point that is proportionally between the input points,
+ * using the values in the provided dimension as the scaling factors.
+ */
 inline int
 point_interpolate(const POINT4D *p1,
 		  const POINT4D *p2,
@@ -318,7 +321,7 @@
 		  char ordinate,
 		  double interpolation_value)
 {
-	static char* dims = "XYZM";
+	static char *dims = "XYZM";
 	double p1_value = lwpoint_get_ordinate(p1, ordinate);
 	double p2_value = lwpoint_get_ordinate(p2, ordinate);
 	double proportion;
@@ -364,10 +367,9 @@
 	return LW_SUCCESS;
 }
 
-
 /**
-* Clip an input POINT between two values, on any ordinate input.
-*/
+ * Clip an input POINT between two values, on any ordinate input.
+ */
 static inline LWCOLLECTION *
 lwpoint_clip_to_ordinate_range(const LWPOINT *point, char ordinate, double from, double to)
 {
@@ -386,7 +388,7 @@
 	/* Test if ordinate is in range */
 	lwpoint_getPoint4d_p(point, &p4d);
 	ordinate_value = lwpoint_get_ordinate(&p4d, ordinate);
-	if ( from <= ordinate_value && to >= ordinate_value )
+	if (from <= ordinate_value && to >= ordinate_value)
 	{
 		LWPOINT *lwp = lwpoint_clone(point);
 		lwcollection_add_lwgeom(lwgeom_out, lwpoint_as_lwgeom(lwp));
@@ -396,8 +398,8 @@
 }
 
 /**
-* Clip an input MULTIPOINT between two values, on any ordinate input.
-*/
+ * Clip an input MULTIPOINT between two values, on any ordinate input.
+ */
 static inline LWCOLLECTION *
 lwmpoint_clip_to_ordinate_range(const LWMPOINT *mpoint, char ordinate, double from, double to)
 {
@@ -413,7 +415,7 @@
 	lwgeom_out = lwcollection_construct_empty(MULTIPOINTTYPE, mpoint->srid, hasz, hasm);
 
 	/* For each point, is its ordinate value between from and to? */
-	for ( i = 0; i < mpoint->ngeoms; i ++ )
+	for (i = 0; i < mpoint->ngeoms; i++)
 	{
 		POINT4D p4d;
 		double ordinate_value;
@@ -421,7 +423,7 @@
 		lwpoint_getPoint4d_p(mpoint->geoms[i], &p4d);
 		ordinate_value = lwpoint_get_ordinate(&p4d, ordinate);
 
-		if ( from <= ordinate_value && to >= ordinate_value )
+		if (from <= ordinate_value && to >= ordinate_value)
 		{
 			LWPOINT *lwp = lwpoint_clone(mpoint->geoms[i]);
 			lwcollection_add_lwgeom(lwgeom_out, lwpoint_as_lwgeom(lwp));
@@ -430,7 +432,7 @@
 
 	/* Set the bbox, if necessary */
 	if (mpoint->bbox)
-		lwgeom_refresh_bbox((LWGEOM*)lwgeom_out);
+		lwgeom_refresh_bbox((LWGEOM *)lwgeom_out);
 
 	return lwgeom_out;
 }
@@ -531,9 +533,9 @@
 }
 
 /**
-* Take in a LINESTRING and return a MULTILINESTRING of those portions of the
-* LINESTRING between the from/to range for the specified ordinate (XYZM)
-*/
+ * Take in a LINESTRING and return a MULTILINESTRING of those portions of the
+ * LINESTRING between the from/to range for the specified ordinate (XYZM)
+ */
 static inline LWCOLLECTION *
 lwline_clip_to_ordinate_range(const LWLINE *line, char ordinate, double from, double to)
 {
@@ -585,7 +587,7 @@
 		if (ordinate_value_p >= from && ordinate_value_p <= to)
 		{
 
-			if ( ! added_last_point )
+			if (!added_last_point)
 			{
 				/* We didn't add the previous point, so this is a new segment.
 				 *  Make a new point array. */
@@ -823,7 +825,7 @@
 	return lwgeom_out;
 }
 
-LWCOLLECTION*
+LWCOLLECTION *
 lwgeom_clip_to_ordinate_range(const LWGEOM *lwin, char ordinate, double from, double to, double offset)
 {
 	LWCOLLECTION *out_col;
@@ -838,19 +840,19 @@
 		to = t;
 	}
 
-	if ( ! lwin )
+	if (!lwin)
 		lwerror("lwgeom_clip_to_ordinate_range: null input geometry!");
 
-	switch ( lwin->type )
+	switch (lwin->type)
 	{
 	case LINETYPE:
-		out_col = lwline_clip_to_ordinate_range((LWLINE*)lwin, ordinate, from, to);
+		out_col = lwline_clip_to_ordinate_range((LWLINE *)lwin, ordinate, from, to);
 		break;
 	case MULTIPOINTTYPE:
-		out_col = lwmpoint_clip_to_ordinate_range((LWMPOINT*)lwin, ordinate, from, to);
+		out_col = lwmpoint_clip_to_ordinate_range((LWMPOINT *)lwin, ordinate, from, to);
 		break;
 	case POINTTYPE:
-		out_col = lwpoint_clip_to_ordinate_range((LWPOINT*)lwin, ordinate, from, to);
+		out_col = lwpoint_clip_to_ordinate_range((LWPOINT *)lwin, ordinate, from, to);
 		break;
 	case POLYGONTYPE:
 		out_col = lwpoly_clip_to_ordinate_range((LWPOLY *)lwin, ordinate, from, to);
@@ -875,8 +877,7 @@
 		lwerror("lwgeom_clip_to_ordinate_range clipping routine returned NULL");
 
 	/* Return if we aren't going to offset the result */
-	if (FP_IS_ZERO(offset) ||
-	    lwgeom_is_empty(lwcollection_as_lwgeom(out_col)))
+	if (FP_IS_ZERO(offset) || lwgeom_is_empty(lwcollection_as_lwgeom(out_col)))
 		return out_col;
 
 	/* Construct a collection to hold our outputs. */
@@ -884,19 +885,19 @@
 	out_offset = lwcollection_construct_empty(MULTILINETYPE, lwin->srid, 0, 0);
 
 	/* Try and offset the linear portions of the return value */
-	for ( i = 0; i < out_col->ngeoms; i++ )
+	for (i = 0; i < out_col->ngeoms; i++)
 	{
 		int type = out_col->geoms[i]->type;
-		if ( type == POINTTYPE )
+		if (type == POINTTYPE)
 		{
 			lwnotice("lwgeom_clip_to_ordinate_range cannot offset a clipped point");
 			continue;
 		}
-		else if ( type == LINETYPE )
+		else if (type == LINETYPE)
 		{
 			/* lwgeom_offsetcurve(line, offset, quadsegs, joinstyle (round), mitrelimit) */
 			LWGEOM *lwoff = lwgeom_offsetcurve(out_col->geoms[i], offset, 8, 1, 5.0);
-			if ( ! lwoff )
+			if (!lwoff)
 			{
 				lwerror("lwgeom_offsetcurve returned null");
 			}
@@ -904,7 +905,8 @@
 		}
 		else
 		{
-			lwerror("lwgeom_clip_to_ordinate_range found an unexpected type (%s) in the offset routine",lwtype_name(type));
+			lwerror("lwgeom_clip_to_ordinate_range found an unexpected type (%s) in the offset routine",
+				lwtype_name(type));
 		}
 	}
 
@@ -911,10 +913,10 @@
 	return out_offset;
 }
 
-LWCOLLECTION*
+LWCOLLECTION *
 lwgeom_locate_between(const LWGEOM *lwin, double from, double to, double offset)
 {
-	if ( ! lwgeom_has_m(lwin) )
+	if (!lwgeom_has_m(lwin))
 		lwerror("Input geometry does not have a measure dimension");
 
 	return lwgeom_clip_to_ordinate_range(lwin, 'M', from, to, offset);
@@ -926,16 +928,16 @@
 	POINT4D p, p_proj;
 	double ret = 0.0;
 
-	if ( ! lwin )
+	if (!lwin)
 		lwerror("lwgeom_interpolate_point: null input geometry!");
 
-	if ( ! lwgeom_has_m(lwin) )
+	if (!lwgeom_has_m(lwin))
 		lwerror("Input geometry does not have a measure dimension");
 
-	if ( lwgeom_is_empty(lwin) || lwpoint_is_empty(lwpt) )
+	if (lwgeom_is_empty(lwin) || lwpoint_is_empty(lwpt))
 		lwerror("Input geometry is empty");
 
-	switch ( lwin->type )
+	switch (lwin->type)
 	{
 	case LINETYPE:
 	{
@@ -976,9 +978,7 @@
  *
  */
 static double
-segments_tcpa(POINT4D* p0, const POINT4D* p1,
-              POINT4D* q0, const POINT4D* q1,
-              double t0, double t1)
+segments_tcpa(POINT4D *p0, const POINT4D *p1, POINT4D *q0, const POINT4D *q1, double t0, double t1)
 {
 	POINT3DZ pv; /* velocity of p, aka u */
 	POINT3DZ qv; /* velocity of q, aka v */
@@ -995,15 +995,15 @@
 	*/
 
 	/* PV aka U */
-	pv.x = ( p1->x - p0->x );
-	pv.y = ( p1->y - p0->y );
-	pv.z = ( p1->z - p0->z );
+	pv.x = (p1->x - p0->x);
+	pv.y = (p1->y - p0->y);
+	pv.z = (p1->z - p0->z);
 	/*lwnotice("PV:  %g, %g, %g", pv.x, pv.y, pv.z);*/
 
 	/* QV aka V */
-	qv.x = ( q1->x - q0->x );
-	qv.y = ( q1->y - q0->y );
-	qv.z = ( q1->z - q0->z );
+	qv.x = (q1->x - q0->x);
+	qv.y = (q1->y - q0->y);
+	qv.z = (q1->z - q0->z);
 	/*lwnotice("QV:  %g, %g, %g", qv.x, qv.y, qv.z);*/
 
 	dv.x = pv.x - qv.x;
@@ -1011,10 +1011,10 @@
 	dv.z = pv.z - qv.z;
 	/*lwnotice("DV:  %g, %g, %g", dv.x, dv.y, dv.z);*/
 
-	double dv2 = DOT(dv,dv);
+	double dv2 = DOT(dv, dv);
 	/*lwnotice("DOT: %g", dv2);*/
 
-	if ( dv2 == 0.0 )
+	if (dv2 == 0.0)
 	{
 		/* Distance is the same at any time, we pick the earliest */
 		return t0;
@@ -1021,9 +1021,9 @@
 	}
 
 	/* Distance at any given time, with t0 */
-	w0.x = ( p0->x - q0->x );
-	w0.y = ( p0->y - q0->y );
-	w0.z = ( p0->z - q0->z );
+	w0.x = (p0->x - q0->x);
+	w0.y = (p0->y - q0->y);
+	w0.z = (p0->z - q0->z);
 
 	/*lwnotice("W0:  %g, %g, %g", w0.x, w0.y, w0.z);*/
 
@@ -1030,16 +1030,16 @@
 	/* Check that at distance dt w0 is distance */
 
 	/* This is the fraction of measure difference */
-	double t = -DOT(w0,dv) / dv2;
+	double t = -DOT(w0, dv) / dv2;
 	/*lwnotice("CLOSEST TIME (fraction): %g", t);*/
 
-	if ( t > 1.0 )
+	if (t > 1.0)
 	{
 		/* Getting closer as we move to the end */
 		/*lwnotice("Converging");*/
 		t = 1;
 	}
-	else if ( t < 0.0 )
+	else if (t < 0.0)
 	{
 		/*lwnotice("Diverging");*/
 		t = 0;
@@ -1065,11 +1065,11 @@
 ptarray_collect_mvals(const POINTARRAY *pa, double tmin, double tmax, double *mvals)
 {
 	POINT4D pbuf;
-	uint32_t i, n=0;
-	for (i=0; i<pa->npoints; ++i)
+	uint32_t i, n = 0;
+	for (i = 0; i < pa->npoints; ++i)
 	{
 		getPoint4d_p(pa, i, &pbuf); /* could be optimized */
-		if ( pbuf.m >= tmin && pbuf.m <= tmax )
+		if (pbuf.m >= tmin && pbuf.m <= tmax)
 			mvals[n++] = pbuf.m;
 	}
 	return n;
@@ -1080,9 +1080,9 @@
 {
 	double a = *((double *)pa);
 	double b = *((double *)pb);
-	if ( a < b )
+	if (a < b)
 		return -1;
-	else if ( a > b )
+	else if (a > b)
 		return 1;
 	else
 		return 0;
@@ -1092,17 +1092,17 @@
 static int
 uniq(double *vals, int nvals)
 {
-	int i, last=0;
-	for (i=1; i<nvals; ++i)
+	int i, last = 0;
+	for (i = 1; i < nvals; ++i)
 	{
 		// lwnotice("(I%d):%g", i, vals[i]);
-		if ( vals[i] != vals[last] )
+		if (vals[i] != vals[last])
 		{
 			vals[++last] = vals[i];
 			// lwnotice("(O%d):%g", last, vals[last]);
 		}
 	}
-	return last+1;
+	return last + 1;
 }
 
 /*
@@ -1127,12 +1127,12 @@
 
 	/* Walk through each segment in the point array */
 	getPoint4d_p(pa, i, &p1);
-	for ( i = from+1; i < pa->npoints; i++ )
+	for (i = from + 1; i < pa->npoints; i++)
 	{
 		getPoint4d_p(pa, i, &p2);
 
-		if ( segment_locate_along(&p1, &p2, m, 0, p) == LW_TRUE )
-			return i-1; /* found */
+		if (segment_locate_along(&p1, &p2, m, 0, p) == LW_TRUE)
+			return i - 1; /* found */
 
 		p1 = p2;
 	}
@@ -1152,7 +1152,7 @@
 	double mintime;
 	double mindist2 = FLT_MAX; /* minimum distance, squared */
 
-	if ( ! lwgeom_has_m(g1) || ! lwgeom_has_m(g2) )
+	if (!lwgeom_has_m(g1) || !lwgeom_has_m(g2))
 	{
 		lwerror("Both input geometries must have a measure dimension");
 		return -1;
@@ -1161,13 +1161,13 @@
 	l1 = lwgeom_as_lwline(g1);
 	l2 = lwgeom_as_lwline(g2);
 
-	if ( ! l1 || ! l2 )
+	if (!l1 || !l2)
 	{
 		lwerror("Both input geometries must be linestrings");
 		return -1;
 	}
 
-	if ( l1->points->npoints < 2 || l2->points->npoints < 2 )
+	if (l1->points->npoints < 2 || l2->points->npoints < 2)
 	{
 		lwerror("Both input lines must have at least 2 points");
 		return -1;
@@ -1187,7 +1187,7 @@
 	tmin = FP_MAX(gbox1.mmin, gbox2.mmin);
 	tmax = FP_MIN(gbox1.mmax, gbox2.mmax);
 
-	if ( tmax < tmin )
+	if (tmax < tmin)
 	{
 		LWDEBUG(1, "Inputs never exist at the same time");
 		return -2;
@@ -1199,11 +1199,10 @@
 	 * Collect M values in common time range from inputs
 	 */
 
-	mvals = lwalloc( sizeof(double) *
-	                 ( l1->points->npoints + l2->points->npoints ) );
+	mvals = lwalloc(sizeof(double) * (l1->points->npoints + l2->points->npoints));
 
 	/* TODO: also clip the lines ? */
-	nmvals  = ptarray_collect_mvals(l1->points, tmin, tmax, mvals);
+	nmvals = ptarray_collect_mvals(l1->points, tmin, tmax, mvals);
 	nmvals += ptarray_collect_mvals(l2->points, tmin, tmax, mvals + nmvals);
 
 	/* Sort values in ascending order */
@@ -1212,7 +1211,7 @@
 	/* Remove duplicated values */
 	nmvals = uniq(mvals, nmvals);
 
-	if ( nmvals < 2 )
+	if (nmvals < 2)
 	{
 		{
 			/* there's a single time, must be that one... */
@@ -1219,21 +1218,21 @@
 			double t0 = mvals[0];
 			POINT4D p0, p1;
 			LWDEBUGF(1, "Inputs only exist both at a single time (%g)", t0);
-			if ( mindist )
+			if (mindist)
 			{
-				if ( -1 == ptarray_locate_along_linear(l1->points, t0, &p0, 0) )
+				if (-1 == ptarray_locate_along_linear(l1->points, t0, &p0, 0))
 				{
 					lwfree(mvals);
 					lwerror("Could not find point with M=%g on first geom", t0);
 					return -1;
 				}
-				if ( -1 == ptarray_locate_along_linear(l2->points, t0, &p1, 0) )
+				if (-1 == ptarray_locate_along_linear(l2->points, t0, &p1, 0))
 				{
 					lwfree(mvals);
 					lwerror("Could not find point with M=%g on second geom", t0);
 					return -1;
 				}
-				*mindist = distance3d_pt_pt((POINT3D*)&p0, (POINT3D*)&p1);
+				*mindist = distance3d_pt_pt((POINT3D *)&p0, (POINT3D *)&p1);
 			}
 			lwfree(mvals);
 			return t0;
@@ -1245,9 +1244,9 @@
 	 * approach and actual distance between points at that time
 	 */
 	mintime = tmin;
-	for (i=1; i<nmvals; ++i)
+	for (i = 1; i < nmvals; ++i)
 	{
-		double t0 = mvals[i-1];
+		double t0 = mvals[i - 1];
 		double t1 = mvals[i];
 		double t;
 		POINT4D p0, p1, q0, q1;
@@ -1257,19 +1256,23 @@
 		// lwnotice("T %g-%g", t0, t1);
 
 		seg = ptarray_locate_along_linear(l1->points, t0, &p0, 0);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 1: %g, %g, %g", t0, seg, p0.x, p0.y, p0.z);
 
 		seg = ptarray_locate_along_linear(l1->points, t1, &p1, seg);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 1: %g, %g, %g", t1, seg, p1.x, p1.y, p1.z);
 
 		seg = ptarray_locate_along_linear(l2->points, t0, &q0, 0);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 2: %g, %g, %g", t0, seg, q0.x, q0.y, q0.z);
 
 		seg = ptarray_locate_along_linear(l2->points, t1, &q1, seg);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 2: %g, %g, %g", t1, seg, q1.x, q1.y, q1.z);
 
 		t = segments_tcpa(&p0, &p1, &q0, &q1, t0, t1);
@@ -1280,10 +1283,8 @@
 		q0.x, q0.y, q0.z, t);
 		*/
 
-		dist2 = ( q0.x - p0.x ) * ( q0.x - p0.x ) +
-		        ( q0.y - p0.y ) * ( q0.y - p0.y ) +
-		        ( q0.z - p0.z ) * ( q0.z - p0.z );
-		if ( dist2 < mindist2 )
+		dist2 = (q0.x - p0.x) * (q0.x - p0.x) + (q0.y - p0.y) * (q0.y - p0.y) + (q0.z - p0.z) * (q0.z - p0.z);
+		if (dist2 < mindist2)
 		{
 			mindist2 = dist2;
 			mintime = t;
@@ -1297,7 +1298,7 @@
 
 	lwfree(mvals);
 
-	if ( mindist )
+	if (mindist)
 	{
 		*mindist = sqrt(mindist2);
 	}
@@ -1318,7 +1319,7 @@
 	double maxdist2 = maxdist * maxdist;
 	int within = LW_FALSE;
 
-	if ( ! lwgeom_has_m(g1) || ! lwgeom_has_m(g2) )
+	if (!lwgeom_has_m(g1) || !lwgeom_has_m(g2))
 	{
 		lwerror("Both input geometries must have a measure dimension");
 		return LW_FALSE;
@@ -1327,13 +1328,13 @@
 	l1 = lwgeom_as_lwline(g1);
 	l2 = lwgeom_as_lwline(g2);
 
-	if ( ! l1 || ! l2 )
+	if (!l1 || !l2)
 	{
 		lwerror("Both input geometries must be linestrings");
 		return LW_FALSE;
 	}
 
-	if ( l1->points->npoints < 2 || l2->points->npoints < 2 )
+	if (l1->points->npoints < 2 || l2->points->npoints < 2)
 	{
 		/* TODO: return distance between these two points */
 		lwerror("Both input lines must have at least 2 points");
@@ -1341,10 +1342,10 @@
 	}
 
 	/* We use lwgeom_calculate_gbox() instead of lwgeom_get_gbox() */
- 	/* because we cannot afford the float rounding inaccuracy when */
- 	/* we compare the ranges for overlap below */
- 	lwgeom_calculate_gbox(g1, &gbox1);
- 	lwgeom_calculate_gbox(g2, &gbox2);
+	/* because we cannot afford the float rounding inaccuracy when */
+	/* we compare the ranges for overlap below */
+	lwgeom_calculate_gbox(g1, &gbox1);
+	lwgeom_calculate_gbox(g2, &gbox2);
 
 	/*
 	 * Find overlapping M range
@@ -1354,7 +1355,7 @@
 	tmin = FP_MAX(gbox1.mmin, gbox2.mmin);
 	tmax = FP_MIN(gbox1.mmax, gbox2.mmax);
 
-	if ( tmax < tmin )
+	if (tmax < tmin)
 	{
 		LWDEBUG(1, "Inputs never exist at the same time");
 		return LW_FALSE;
@@ -1364,11 +1365,10 @@
 	 * Collect M values in common time range from inputs
 	 */
 
-	mvals = lwalloc( sizeof(double) *
-	                 ( l1->points->npoints + l2->points->npoints ) );
+	mvals = lwalloc(sizeof(double) * (l1->points->npoints + l2->points->npoints));
 
 	/* TODO: also clip the lines ? */
-	nmvals  = ptarray_collect_mvals(l1->points, tmin, tmax, mvals);
+	nmvals = ptarray_collect_mvals(l1->points, tmin, tmax, mvals);
 	nmvals += ptarray_collect_mvals(l2->points, tmin, tmax, mvals + nmvals);
 
 	/* Sort values in ascending order */
@@ -1377,23 +1377,23 @@
 	/* Remove duplicated values */
 	nmvals = uniq(mvals, nmvals);
 
-	if ( nmvals < 2 )
+	if (nmvals < 2)
 	{
 		/* there's a single time, must be that one... */
 		double t0 = mvals[0];
 		POINT4D p0, p1;
 		LWDEBUGF(1, "Inputs only exist both at a single time (%g)", t0);
-		if ( -1 == ptarray_locate_along_linear(l1->points, t0, &p0, 0) )
+		if (-1 == ptarray_locate_along_linear(l1->points, t0, &p0, 0))
 		{
 			lwnotice("Could not find point with M=%g on first geom", t0);
 			return LW_FALSE;
 		}
-		if ( -1 == ptarray_locate_along_linear(l2->points, t0, &p1, 0) )
+		if (-1 == ptarray_locate_along_linear(l2->points, t0, &p1, 0))
 		{
 			lwnotice("Could not find point with M=%g on second geom", t0);
 			return LW_FALSE;
 		}
-		if ( distance3d_pt_pt((POINT3D*)&p0, (POINT3D*)&p1) <= maxdist )
+		if (distance3d_pt_pt((POINT3D *)&p0, (POINT3D *)&p1) <= maxdist)
 			within = LW_TRUE;
 		lwfree(mvals);
 		return within;
@@ -1403,9 +1403,9 @@
 	 * For each consecutive pair of measures, compute time of closest point
 	 * approach and actual distance between points at that time
 	 */
-	for (i=1; i<nmvals; ++i)
+	for (i = 1; i < nmvals; ++i)
 	{
-		double t0 = mvals[i-1];
+		double t0 = mvals[i - 1];
 		double t1 = mvals[i];
 #if POSTGIS_DEBUG_LEVEL >= 1
 		double t;
@@ -1417,25 +1417,29 @@
 		// lwnotice("T %g-%g", t0, t1);
 
 		seg = ptarray_locate_along_linear(l1->points, t0, &p0, 0);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 1: %g, %g, %g", t0, seg, p0.x, p0.y, p0.z);
 
 		seg = ptarray_locate_along_linear(l1->points, t1, &p1, seg);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 1: %g, %g, %g", t1, seg, p1.x, p1.y, p1.z);
 
 		seg = ptarray_locate_along_linear(l2->points, t0, &q0, 0);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
 		// lwnotice("Measure %g on segment %d of line 2: %g, %g, %g", t0, seg, q0.x, q0.y, q0.z);
 
 		seg = ptarray_locate_along_linear(l2->points, t1, &q1, seg);
-		if ( -1 == seg ) continue; /* possible, if GBOX is approximated */
-		// lwnotice("Measure %g on segment %d of line 2: %g, %g, %g", t1, seg, q1.x, q1.y, q1.z);
+		if (-1 == seg)
+			continue; /* possible, if GBOX is approximated */
+			// lwnotice("Measure %g on segment %d of line 2: %g, %g, %g", t1, seg, q1.x, q1.y, q1.z);
 
 #if POSTGIS_DEBUG_LEVEL >= 1
 		t =
 #endif
-		segments_tcpa(&p0, &p1, &q0, &q1, t0, t1);
+		    segments_tcpa(&p0, &p1, &q0, &q1, t0, t1);
 
 		/*
 		lwnotice("Closest points: %g,%g,%g and %g,%g,%g at time %g",
@@ -1443,10 +1447,8 @@
 		q0.x, q0.y, q0.z, t);
 		*/
 
-		dist2 = ( q0.x - p0.x ) * ( q0.x - p0.x ) +
-		        ( q0.y - p0.y ) * ( q0.y - p0.y ) +
-		        ( q0.z - p0.z ) * ( q0.z - p0.z );
-		if ( dist2 <= maxdist2 )
+		dist2 = (q0.x - p0.x) * (q0.x - p0.x) + (q0.y - p0.y) * (q0.y - p0.y) + (q0.z - p0.z) * (q0.z - p0.z);
+		if (dist2 <= maxdist2)
 		{
 			LWDEBUGF(1, "Within distance %g at time %g, breaking", sqrt(dist2), t);
 			within = LW_TRUE;



More information about the postgis-tickets mailing list