43 const Point edge1 =
_p1 -
_p0;
44 const Point edge2 =
_p2 -
_p0;
48 const Point pvec = dir.cross(edge2);
49 const Real det = edge1 * pvec;
50 if (std::abs(det) < eps)
53 const Real inv_det = 1.0 / det;
56 const Point tvec = a -
_p0;
57 const Real u = (tvec * pvec) * inv_det;
58 if (!MooseUtils::absoluteFuzzyGreaterEqual(u, 0.0, eps) ||
59 !MooseUtils::absoluteFuzzyLessEqual(u, 1.0, eps))
63 const Point qvec = tvec.cross(edge1);
64 const Real v = (dir * qvec) * inv_det;
65 if (!MooseUtils::absoluteFuzzyGreaterEqual(v, 0.0, eps) ||
66 !MooseUtils::absoluteFuzzyLessEqual(u + v, 1.0, eps))
70 const Real t = (edge2 * qvec) * inv_det;
71 if (!MooseUtils::absoluteFuzzyGreaterEqual(t, 0.0, eps) ||
72 !MooseUtils::absoluteFuzzyLessEqual(t, 1.0, eps))
76 intersect_p = a + dir * t;