Vector3 pc = p.vectorTo(c);
double area = n.dot(ab.cross(ac));
double A = n.dot(pb.cross(pc)) / area;
if (A < 0.0) continue;
double B = n.dot(pc.cross(pa)) / area;
if (B < 0.0) continue;
double C = 1.0 - A - B;
if (C < 0.0) continue;
Point2 ta = null, tb = null, tc = null;