PostGIS  3.6.1dev-r@@SVN_REVISION@@

◆ project_pt_pt()

int project_pt_pt ( const POINT4D A,
const POINT4D B,
double  distance,
POINT4D R 
)

Azimuth is angle in radians from vertical axis.

Definition at line 2445 of file measures.c.

2446 {
2447  /* Convert from azimuth to conventional slope */
2448  double len = distance2d_pt_pt((const POINT2D *)A, (const POINT2D *)B);
2449  double prop = distance / len;
2450  double dx = (B->x - A->x) * prop;
2451  double dy = (B->y - A->y) * prop;
2452  double dz = (B->z - A->z) * prop;
2453  double dm = (B->m - A->m) * prop;
2454  R->x = B->x + dx;
2455  R->y = B->y + dy;
2456  if (isfinite(dz)) R->z = B->z + dz;
2457  if (isfinite(dm)) R->m = B->m + dm;
2458  return LW_TRUE;
2459 }
#define LW_TRUE
Return types for functions with status returns.
Definition: liblwgeom.h:93
if(!(yy_init))
static double distance(double x1, double y1, double x2, double y2)
Definition: lwtree.c:1032
double distance2d_pt_pt(const POINT2D *p1, const POINT2D *p2)
Definition: measures.c:2344
double y
Definition: liblwgeom.h:390
double x
Definition: liblwgeom.h:390
double m
Definition: liblwgeom.h:414
double x
Definition: liblwgeom.h:414
double z
Definition: liblwgeom.h:414
double y
Definition: liblwgeom.h:414

References distance(), distance2d_pt_pt(), if(), LW_TRUE, POINT4D::m, POINT4D::x, POINT4D::y, and POINT4D::z.

Referenced by lwline_extend(), and lwpoint_project_lwpoint().

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