pointInTri function
Checks if point p is inside the triangle defined by a, b, c.
Implementation
@pragma('vm:prefer-inline')
bool pointInTri(Offset p, Offset a, Offset b, Offset c) {
final v0 = c - a, v1 = b - a, v2 = p - a;
final d00 = v0.dx * v0.dx + v0.dy * v0.dy;
final d01 = v0.dx * v1.dx + v0.dy * v1.dy;
final d11 = v1.dx * v1.dx + v1.dy * v1.dy;
final d20 = v2.dx * v0.dx + v2.dy * v0.dy;
final d21 = v2.dx * v1.dx + v2.dy * v1.dy;
final denom = d00 * d11 - d01 * d01;
if (denom.abs() < 1e-6) return false;
final v = (d11 * d20 - d01 * d21) / denom;
final w = (d00 * d21 - d01 * d20) / denom;
final u = 1 - v - w;
return u >= 0 && v >= 0 && w >= 0;
}