tricheck method

bool tricheck(
  1. Vector3 p,
  2. Vector3 p0,
  3. Vector3 p1,
  4. Vector3 p2,
)

Check the triangle for intersections

Implementation

bool tricheck(Vector3 p,Vector3 p0,Vector3 p1,Vector3 p2){
  double A = 0.5 * (-p1.y * p2.x + p0.y * (-p1.x + p2.x) + p0.x * (p1.y - p2.y) + p1.x * p2.y);
  int sg = A < 0 ? -1 : 1;
  double s = (p0.y * p2.x - p0.x * p2.y + (p2.y - p0.y) * p.x + (p0.x - p2.x) * p.y) * sg;
  double t = (p0.x * p1.y - p0.y * p1.x + (p0.y - p1.y) * p.x + (p1.x - p0.x) * p.y) * sg;
  return s > 0 && t > 0 && (s + t) < 2 * A * sg;
}