isPointInsideTriangle method

bool isPointInsideTriangle(
  1. Offset vertexA,
  2. Offset vertexB,
  3. Offset vertexC
)

Implementation

bool isPointInsideTriangle(Offset vertexA, Offset vertexB, Offset vertexC) {
  double alpha = ((vertexB.dy - vertexC.dy)*(dx - vertexC.dx) + (vertexC.dx - vertexB.dx)*(dy - vertexC.dy)) /
      ((vertexB.dy - vertexC.dy)*(vertexA.dx - vertexC.dx) + (vertexC.dx - vertexB.dx)*(vertexA.dy - vertexC.dy));

  double beta = ((vertexC.dy - vertexA.dy)*(dx - vertexC.dx) + (vertexA.dx - vertexC.dx)*(dy - vertexC.dy)) /
      ((vertexB.dy - vertexC.dy)*(vertexA.dx - vertexC.dx) + (vertexC.dx - vertexB.dx)*(vertexA.dy - vertexC.dy));

  double gamma = 1.0 - alpha - beta;

  return alpha > 0 && beta > 0 && gamma > 0;
}