16 template <
typename Real>
28 template <
typename Real>
31 public FIQuery<Real, Line3<Real>, Plane3<Real>>
36 public FIQuery<Real, Line3<Real>, Plane3<Real>>::Result
50 template <
typename Real>
59 auto vpResult = vpQuery(ray.origin, plane);
61 Real DdN =
Dot(ray.direction, plane.normal);
66 result.intersect = (vpResult.signedDistance <= (Real)0);
68 else if (DdN < (Real)0)
72 result.intersect = (vpResult.signedDistance >= (Real)0);
77 result.intersect = (vpResult.distance == (Real)0);
83 template <
typename Real>
89 DoQuery(ray.origin, ray.direction, plane, result);
92 result.point = ray.origin + result.parameter * ray.direction;
97 template <
typename Real>
103 rayDirection, plane, result);
104 if (result.intersect)
108 if (result.parameter < (Real)0)
110 result.intersect =
false;
111 result.numIntersections = 0;
DualQuaternion< Real > Dot(DualQuaternion< Real > const &d0, DualQuaternion< Real > const &d1)
Result operator()(Type0 const &primitive0, Type1 const &primitive1)