static int clip_poly(float src[MAXV][MAXN], float dst[MAXV][MAXN], int len, int n, float val, int isy, int ismax) { float cv1[MAXN]; float cv2[MAXN]; int v1, v2, cp; int r; v1 = len - 1; cp = 0; for (v2 = 0; v2 < len; v2++) { copy_vert(cv1, src[v1], n); copy_vert(cv2, src[v2], n); if (isy) r = clipy(val, ismax, cv1, cv2, n); else r = clipx(val, ismax, cv1, cv2, n); switch (r) { case IN: copy_vert(dst[cp++], cv2, n); break; case OUT: break; case LEAVE: copy_vert(dst[cp++], cv2, n); break; case ENTER: copy_vert(dst[cp++], cv1, n); copy_vert(dst[cp++], cv2, n); break; } v1 = v2; } return cp; }
static int clip_poly(float src[MAXV][MAXN], float dst[MAXV][MAXN], int len, int n, float val, int isy, int ismax) { int v1, v2, cp; v1 = len - 1; cp = 0; if (isy) for (v2 = 0; v2 < len; v2++) { cp += clipy(val, ismax, src[v1], src[v2], n, dst[cp]); v1 = v2; } else for (v2 = 0; v2 < len; v2++) { cp += clipx(val, ismax, src[v1], src[v2], n, dst[cp]); v1 = v2; } return cp; }