19 template <
typename Real>
31 template <
typename Real>
58 template <
typename Real>
65 Real DdN =
Dot(line.direction, plane.normal);
69 result.intersect =
true;
75 result.intersect = (vpQuery(line.origin, plane).distance == (Real)0);
81 template <
typename Real>
87 DoQuery(line.origin, line.direction, plane, result);
90 result.point = line.origin + result.parameter * line.direction;
95 template <
typename Real>
100 Real DdN =
Dot(lineDirection, plane.
normal);
102 auto vpResult = vpQuery(lineOrigin, plane);
107 result.intersect =
true;
108 result.numIntersections = 1;
109 result.parameter = -vpResult.signedDistance / DdN;
115 if (vpResult.distance == (Real)0)
119 result.intersect =
true;
120 result.numIntersections = std::numeric_limits<int>::max();
121 result.parameter = (Real)0;
126 result.intersect =
false;
127 result.numIntersections = 0;
DualQuaternion< Real > Dot(DualQuaternion< Real > const &d0, DualQuaternion< Real > const &d1)
Result operator()(Type0 const &primitive0, Type1 const &primitive1)