22 #include <grass/gis.h>
23 #include <grass/glocale.h>
25 static double min4(
double,
double,
double,
double);
26 static double min2(
double,
double);
29 static int projection = 0;
30 static double factor = 1.0;
78 double G_distance(
double e1,
double n1,
double e2,
double n2)
80 if (projection == PROJECTION_LL)
83 return factor * hypot(e1 - e2, n1 - n2);
97 double ax2,
double ay2,
98 double bx1,
double by1,
99 double bx2,
double by2)
106 bx1, by1, bx2, by2, &ra, &rb, &x, &y) > 0)
127 double x1,
double y1,
double x2,
132 double xq, yq, ra, rb;
139 if (dx == 0.0 && dy == 0.0)
142 if (fabs(dy) > fabs(dx)) {
144 yq = (dx / dy) * (xp - xq) + yp;
148 xq = (dy / dx) * (yp - yq) + xp;
160 G_warning(_(
"G_distance_point_to_line_segment: shouldn't happen: "
161 "code=%d P=(%f,%f) S=(%f,%f)(%f,%f)"),
162 t, xp, yp, x1, y1, x2, y2);
167 if (rb >= 0 && rb <= 1.0)
176 static double min4(
double a,
double b,
double c,
double d)
178 return min2(min2(a, b), min2(c, d));
181 static double min2(
double a,
double b)
183 return a < b ? a :
b;