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

◆ lwcircstring_calculate_gbox_cartesian()

static int lwcircstring_calculate_gbox_cartesian ( LWCIRCSTRING curve,
GBOX gbox 
)
static

Definition at line 660 of file gbox.c.

661{
662 GBOX tmp = {0};
663 POINT4D p1, p2, p3;
664 uint32_t i;
665
666 if (!curve) return LW_FAILURE;
667 if (curve->points->npoints < 3) return LW_FAILURE;
668
669 tmp.flags =
670 lwflags(FLAGS_GET_Z(curve->flags), FLAGS_GET_M(curve->flags), 0);
671
672 /* Initialize */
673 gbox->xmin = gbox->ymin = gbox->zmin = gbox->mmin = FLT_MAX;
674 gbox->xmax = gbox->ymax = gbox->zmax = gbox->mmax = -1*FLT_MAX;
675
676 for ( i = 2; i < curve->points->npoints; i += 2 )
677 {
678 getPoint4d_p(curve->points, i-2, &p1);
679 getPoint4d_p(curve->points, i-1, &p2);
680 getPoint4d_p(curve->points, i, &p3);
681
682 if (lw_arc_calculate_gbox_cartesian(&p1, &p2, &p3, &tmp) == LW_FAILURE)
683 continue;
684
685 gbox_merge(&tmp, gbox);
686 }
687
688 return LW_SUCCESS;
689}
int gbox_merge(const GBOX *new_box, GBOX *merge_box)
Update the merged GBOX to be large enough to include itself and the new box.
Definition gbox.c:257
static int lw_arc_calculate_gbox_cartesian(const POINT4D *p1, const POINT4D *p2, const POINT4D *p3, GBOX *gbox)
Definition gbox.c:534
#define LW_FAILURE
Definition liblwgeom.h:96
#define LW_SUCCESS
Definition liblwgeom.h:97
#define FLAGS_GET_Z(flags)
Definition liblwgeom.h:165
#define FLAGS_GET_M(flags)
Definition liblwgeom.h:166
int getPoint4d_p(const POINTARRAY *pa, uint32_t n, POINT4D *point)
Definition lwgeom_api.c:125
lwflags_t lwflags(int hasz, int hasm, int geodetic)
Construct a new flags bitmask.
Definition lwutil.c:477
double ymax
Definition liblwgeom.h:357
double zmax
Definition liblwgeom.h:359
double xmax
Definition liblwgeom.h:355
double zmin
Definition liblwgeom.h:358
double mmax
Definition liblwgeom.h:361
double ymin
Definition liblwgeom.h:356
double xmin
Definition liblwgeom.h:354
double mmin
Definition liblwgeom.h:360
lwflags_t flags
Definition liblwgeom.h:353
lwflags_t flags
Definition liblwgeom.h:509
POINTARRAY * points
Definition liblwgeom.h:507
uint32_t npoints
Definition liblwgeom.h:427

References GBOX::flags, LWCIRCSTRING::flags, FLAGS_GET_M, FLAGS_GET_Z, gbox_merge(), getPoint4d_p(), lw_arc_calculate_gbox_cartesian(), LW_FAILURE, LW_SUCCESS, lwflags(), GBOX::mmax, GBOX::mmin, POINTARRAY::npoints, LWCIRCSTRING::points, GBOX::xmax, GBOX::xmin, GBOX::ymax, GBOX::ymin, GBOX::zmax, and GBOX::zmin.

Referenced by lwgeom_calculate_gbox_cartesian().

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