PostGIS  2.5.7dev-r@@SVN_REVISION@@

◆ edge_distance_to_edge()

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.

IMPORTANT: this test does not check for edge intersection!!! (distance == 0) You have to check for intersection before calling this function.

Definition at line 1269 of file lwgeodetic.c.

1270 {
1271  double d;
1272  GEOGRAPHIC_POINT gcp1s, gcp1e, gcp2s, gcp2e, c1, c2;
1273  double d1s = edge_distance_to_point(e1, &(e2->start), &gcp1s);
1274  double d1e = edge_distance_to_point(e1, &(e2->end), &gcp1e);
1275  double d2s = edge_distance_to_point(e2, &(e1->start), &gcp2s);
1276  double d2e = edge_distance_to_point(e2, &(e1->end), &gcp2e);
1277 
1278  d = d1s;
1279  c1 = gcp1s;
1280  c2 = e2->start;
1281 
1282  if ( d1e < d )
1283  {
1284  d = d1e;
1285  c1 = gcp1e;
1286  c2 = e2->end;
1287  }
1288 
1289  if ( d2s < d )
1290  {
1291  d = d2s;
1292  c1 = e1->start;
1293  c2 = gcp2s;
1294  }
1295 
1296  if ( d2e < d )
1297  {
1298  d = d2e;
1299  c1 = e1->end;
1300  c2 = gcp2e;
1301  }
1302 
1303  if ( closest1 ) *closest1 = c1;
1304  if ( closest2 ) *closest2 = c2;
1305 
1306  return d;
1307 }
double edge_distance_to_point(const GEOGRAPHIC_EDGE *e, const GEOGRAPHIC_POINT *gp, GEOGRAPHIC_POINT *closest)
Definition: lwgeodetic.c:1218
GEOGRAPHIC_POINT start
Definition: lwgeodetic.h:63
GEOGRAPHIC_POINT end
Definition: lwgeodetic.h:64
Point in spherical coordinates on the world.
Definition: lwgeodetic.h:53

References edge_distance_to_point(), GEOGRAPHIC_EDGE::end, and GEOGRAPHIC_EDGE::start.

Referenced by circ_tree_distance_tree_internal(), ptarray_distance_spheroid(), and test_edge_distance_to_edge().

Here is the call graph for this function:
Here is the caller graph for this function: