PostGIS  2.2.8dev-r@@SVN_REVISION@@

◆ interpolate_point4d()

void interpolate_point4d ( POINT4D A,
POINT4D B,
POINT4D I,
double  F 
)

Find interpolation point I between point A and point B so that the len(AI) == len(AB)*F and I falls on AB segment.

Example:

F=0.5 : A-—I-—B F=1 : A------—B==I F=0 : A==I------—B F=.2 : A-I----—B

Definition at line 806 of file lwgeom_api.c.

References lwerror(), POINT4D::m, POINT4D::x, POINT4D::y, and POINT4D::z.

Referenced by LWGEOM_line_interpolate_point(), and ptarray_substring().

807 {
808 #if PARANOIA_LEVEL > 0
809  double absF=fabs(F);
810  if ( absF < 0 || absF > 1 )
811  {
812  lwerror("interpolate_point4d: invalid F (%g)", F);
813  }
814 #endif
815  I->x=A->x+((B->x-A->x)*F);
816  I->y=A->y+((B->y-A->y)*F);
817  I->z=A->z+((B->z-A->z)*F);
818  I->m=A->m+((B->m-A->m)*F);
819 }
double x
Definition: liblwgeom.h:336
double m
Definition: liblwgeom.h:336
double z
Definition: liblwgeom.h:336
double y
Definition: liblwgeom.h:336
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:74
Here is the call graph for this function:
Here is the caller graph for this function: