PostGIS 3.6.2dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ ptarray_affine()

void ptarray_affine ( POINTARRAY pa,
const AFFINE a 
)

Affine transform a pointarray.

Definition at line 2021 of file ptarray.c.

2022{
2023 if (FLAGS_GET_Z(pa->flags))
2024 {
2025 for (uint32_t i = 0; i < pa->npoints; i++)
2026 {
2027 POINT4D *p4d = (POINT4D *)(getPoint_internal(pa, i));
2028 double x = p4d->x;
2029 double y = p4d->y;
2030 double z = p4d->z;
2031 p4d->x = a->afac * x + a->bfac * y + a->cfac * z + a->xoff;
2032 p4d->y = a->dfac * x + a->efac * y + a->ffac * z + a->yoff;
2033 p4d->z = a->gfac * x + a->hfac * y + a->ifac * z + a->zoff;
2034 }
2035 }
2036 else
2037 {
2038 for (uint32_t i = 0; i < pa->npoints; i++)
2039 {
2040 POINT2D *pt = (POINT2D *)(getPoint_internal(pa, i));
2041 double x = pt->x;
2042 double y = pt->y;
2043 pt->x = a->afac * x + a->bfac * y + a->xoff;
2044 pt->y = a->dfac * x + a->efac * y + a->yoff;
2045 }
2046 }
2047}
#define FLAGS_GET_Z(flags)
Definition liblwgeom.h:165
static uint8_t * getPoint_internal(const POINTARRAY *pa, uint32_t n)
Definition lwinline.h:75
double gfac
Definition liblwgeom.h:332
double zoff
Definition liblwgeom.h:332
double bfac
Definition liblwgeom.h:332
double ifac
Definition liblwgeom.h:332
double xoff
Definition liblwgeom.h:332
double dfac
Definition liblwgeom.h:332
double afac
Definition liblwgeom.h:332
double ffac
Definition liblwgeom.h:332
double cfac
Definition liblwgeom.h:332
double hfac
Definition liblwgeom.h:332
double efac
Definition liblwgeom.h:332
double yoff
Definition liblwgeom.h:332
double y
Definition liblwgeom.h:390
double x
Definition liblwgeom.h:390
double x
Definition liblwgeom.h:414
double z
Definition liblwgeom.h:414
double y
Definition liblwgeom.h:414
lwflags_t flags
Definition liblwgeom.h:431
uint32_t npoints
Definition liblwgeom.h:427

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, AFFINE::xoff, POINT2D::y, POINT4D::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: