123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /*
- ****************************************************************************
- *
- * MODULE: Vector library
- *
- * AUTHOR(S): Radim Blazek
- *
- * PURPOSE: Lower level functions for reading/writing/manipulating vectors.
- *
- * COPYRIGHT: (C) 2001 by the GRASS Development Team
- *
- * This program is free software under the GNU General Public
- * License (>=v2). Read the file COPYING that comes with GRASS
- * for details.
- *
- *****************************************************************************/
- #include <stdlib.h>
- #include <grass/vector.h>
- /*
- * dig_line_box ()
- * set box to points extent
- */
- int dig_line_box(const struct line_pnts *Points, struct bound_box * Box)
- {
- int i;
- if (Points->n_points <= 0) {
- G_zero(Box, sizeof(struct bound_box));
- return 0;
- }
- Box->E = Points->x[0];
- Box->W = Points->x[0];
- Box->N = Points->y[0];
- Box->S = Points->y[0];
- Box->T = Points->z[0];
- Box->B = Points->z[0];
- for (i = 1; i < Points->n_points; i++) {
- if (Points->x[i] > Box->E)
- Box->E = Points->x[i];
- else if (Points->x[i] < Box->W)
- Box->W = Points->x[i];
- if (Points->y[i] > Box->N)
- Box->N = Points->y[i];
- else if (Points->y[i] < Box->S)
- Box->S = Points->y[i];
- if (Points->z[i] > Box->T)
- Box->T = Points->z[i];
- else if (Points->z[i] < Box->B)
- Box->B = Points->z[i];
- }
- return 1;
- }
- /*
- * dig_box_copy ()
- * Copy B to A.
- */
- int dig_box_copy(struct bound_box * A, struct bound_box * B)
- {
- A->N = B->N;
- A->S = B->S;
- A->E = B->E;
- A->W = B->W;
- A->T = B->T;
- A->B = B->B;
- return 1;
- }
- /*
- * dig_box_extend ()
- * Extend A by B.
- */
- int dig_box_extend(struct bound_box * A, struct bound_box * B)
- {
- if (B->N > A->N)
- A->N = B->N;
- if (B->S < A->S)
- A->S = B->S;
- if (B->E > A->E)
- A->E = B->E;
- if (B->W < A->W)
- A->W = B->W;
- if (B->T > A->T)
- A->T = B->T;
- if (B->B < A->B)
- A->B = B->B;
- return 1;
- }
|