PostGIS  3.7.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 2546 of file measures.c.

2547 {
2548  /* Convert from azimuth to conventional slope */
2549  double len = distance2d_pt_pt((const POINT2D *)A, (const POINT2D *)B);
2550  double prop = distance / len;
2551  double dx = (B->x - A->x) * prop;
2552  double dy = (B->y - A->y) * prop;
2553  double dz = (B->z - A->z) * prop;
2554  double dm = (B->m - A->m) * prop;
2555  R->x = B->x + dx;
2556  R->y = B->y + dy;
2557  if (isfinite(dz)) R->z = B->z + dz;
2558  if (isfinite(dm)) R->m = B->m + dm;
2559  return LW_TRUE;
2560 }
#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:2445
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: