| 315 | } |
| 316 | |
| 317 | static bool inConeLoose(int i, int j, int n, const int* verts, int* indices) |
| 318 | { |
| 319 | const int* pi = &verts[(indices[i] & 0x0fffffff) * 4]; |
| 320 | const int* pj = &verts[(indices[j] & 0x0fffffff) * 4]; |
| 321 | const int* pi1 = &verts[(indices[next(i, n)] & 0x0fffffff) * 4]; |
| 322 | const int* pin1 = &verts[(indices[prev(i, n)] & 0x0fffffff) * 4]; |
| 323 | |
| 324 | // If P[i] is a convex vertex [ i+1 left or on (i-1,i) ]. |
| 325 | if (leftOn(pin1, pi, pi1)) |
| 326 | return leftOn(pi, pj, pin1) && leftOn(pj, pi, pi1); |
| 327 | // Assume (i-1,i,i+1) not collinear. |
| 328 | // else P[i] is reflex. |
| 329 | return !(leftOn(pi, pj, pi1) && leftOn(pj, pi, pin1)); |
| 330 | } |
| 331 | |
| 332 | static bool diagonalLoose(int i, int j, int n, const int* verts, int* indices) |
| 333 | { |
no test coverage detected