PostGIS  3.4.0dev-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 2499 of file measures.c.

2500 {
2501  /* Convert from azimuth to conventional slope */
2502  double len = distance2d_pt_pt((const POINT2D *)A, (const POINT2D *)B);
2503  double prop = distance / len;
2504  double dx = (B->x - A->x) * prop;
2505  double dy = (B->y - A->y) * prop;
2506  double dz = (B->z - A->z) * prop;
2507  double dm = (B->m - A->m) * prop;
2508  R->x = B->x + dx;
2509  R->y = B->y + dy;
2510  if (isfinite(dz)) R->z = B->z + dz;
2511  if (isfinite(dm)) R->m = B->m + dm;
2512  return LW_TRUE;
2513 }
#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:2398
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: