int make_chain(ARRAY<NDCZpt*>& V, int (*cmp)(const void*, const void*)) { int i, j, s = 1; NDCZpt *tmp; V.sort(cmp); for (i=2; i<V.num(); i++) { for (j=s; j>=1 ; j--) if ((det(NDCvec(*(V[i]) - *(V[j])), NDCvec(*(V[j-1]) - *(V[j]))) > 0)) break; s = j+1; tmp = V[s]; V[s] = V[i]; V[i] = tmp; } return s; }