PostGIS  3.1.6dev-r@@SVN_REVISION@@

◆ ptarray_affine()

void ptarray_affine ( POINTARRAY pa,
const AFFINE a 
)

Affine transform a pointarray.

Definition at line 1815 of file ptarray.c.

1816 {
1817  if (FLAGS_GET_Z(pa->flags))
1818  {
1819  for (uint32_t i = 0; i < pa->npoints; i++)
1820  {
1821  POINT4D *p4d = (POINT4D *)(getPoint_internal(pa, i));
1822  double x = p4d->x;
1823  double y = p4d->y;
1824  double z = p4d->z;
1825  p4d->x = a->afac * x + a->bfac * y + a->cfac * z + a->xoff;
1826  p4d->y = a->dfac * x + a->efac * y + a->ffac * z + a->yoff;
1827  p4d->z = a->gfac * x + a->hfac * y + a->ifac * z + a->zoff;
1828  }
1829  }
1830  else
1831  {
1832  for (uint32_t i = 0; i < pa->npoints; i++)
1833  {
1834  POINT2D *pt = (POINT2D *)(getPoint_internal(pa, i));
1835  double x = pt->x;
1836  double y = pt->y;
1837  pt->x = a->afac * x + a->bfac * y + a->xoff;
1838  pt->y = a->dfac * x + a->efac * y + a->yoff;
1839  }
1840  }
1841 }
#define FLAGS_GET_Z(flags)
Definition: liblwgeom.h:179
static uint8_t * getPoint_internal(const POINTARRAY *pa, uint32_t n)
Definition: lwinline.h:77
double gfac
Definition: liblwgeom.h:346
double zoff
Definition: liblwgeom.h:346
double bfac
Definition: liblwgeom.h:346
double ifac
Definition: liblwgeom.h:346
double xoff
Definition: liblwgeom.h:346
double dfac
Definition: liblwgeom.h:346
double afac
Definition: liblwgeom.h:346
double ffac
Definition: liblwgeom.h:346
double cfac
Definition: liblwgeom.h:346
double hfac
Definition: liblwgeom.h:346
double efac
Definition: liblwgeom.h:346
double yoff
Definition: liblwgeom.h:346
double y
Definition: liblwgeom.h:404
double x
Definition: liblwgeom.h:404
double x
Definition: liblwgeom.h:428
double z
Definition: liblwgeom.h:428
double y
Definition: liblwgeom.h:428
lwflags_t flags
Definition: liblwgeom.h:445
uint32_t npoints
Definition: liblwgeom.h:441

References AFFINE::afac, AFFINE::bfac, AFFINE::cfac, AFFINE::dfac, AFFINE::efac, AFFINE::ffac, POINTARRAY::flags, FLAGS_GET_Z, getPoint_internal(), AFFINE::gfac, AFFINE::hfac, AFFINE::ifac, POINTARRAY::npoints, POINT2D::x, POINT4D::x, pixval::x, AFFINE::xoff, POINT2D::y, POINT4D::y, pixval::y, AFFINE::yoff, POINT4D::z, and AFFINE::zoff.

Referenced by lwgeom_affine().

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