Beispiel #1
0
void poly_p_boundingbox(gpc_polygon *p, double *x0, double *x1, 
                   double *y0, double *y1) {
  int i;
  double X0, X1, Y0, Y1; 
  if (p->num_contours <= 0) {
    *x0 = *x1 = *y0 = *y1 = 0.0;
    return;
  }
  poly_c_boundingbox(p->contour, x0, x1, y0, y1);
  for (i=1; i < p->num_contours; i++) {
    poly_c_boundingbox(p->contour+i, &X0, &X1, &Y0, &Y1);
    if (X0 < *x0) *x0 = X0;
    if (X1 > *x1) *x1 = X1;
    if (Y0 < *y0) *y0 = Y0;
    if (Y1 > *y1) *y1 = Y1;
  }
}
Beispiel #2
0
static PyObject *Polygon_boundingBox(Polygon *self, PyObject *args) {
    int i=INDEF;
    double x0, x1, y0, y1;
    if (! PyArg_ParseTuple(args, "|i", &i))
        return Polygon_Raise(ERR_ARG);
    if (i!=INDEF) {
        if ((i >= 0) && (i < self->p->num_contours))
            poly_c_boundingbox(self->p->contour+i, &x0, &x1, &y0, &y1);
        else
            return Polygon_Raise(ERR_IND);
    } else
        Polygon_getBoundingBox(self, &x0, &x1, &y0, &y1);
    return Py_BuildValue("dddd", x0, x1,y0,y1);
}
Beispiel #3
0
static PyObject *Polygon_aspectRatio(Polygon *self, PyObject *args) {
    int i=INDEF;
    double x0, x1, y0, y1;
    if (! PyArg_ParseTuple(args, "|i", &i))
        return Polygon_Raise(ERR_ARG);
    if (i!=INDEF) {
        if ((i >= 0) && (i < self->gpc_p->num_contours))
            poly_c_boundingbox(self->gpc_p->contour+i, &x0, &x1, &y0, &y1);
        else
            return Polygon_Raise(ERR_IND);
    } else
        Polygon_getBoundingBox(self, &x0, &x1, &y0, &y1);
    return Py_BuildValue("d", ((x0 != x1) ? fabs((y1-y0)/(x1-x0)) : 0.0));
}