19 template <
typename Real>
22 public FIQuery<Real, Line3<Real>, Cylinder3<Real>>
27 public FIQuery<Real, Line3<Real>, Cylinder3<Real>>::Result
41 template <
typename Real>
47 DoQuery(ray.origin, ray.direction, cylinder, result);
48 for (
int i = 0; i < result.numIntersections; ++i)
50 result.point[i] = ray.origin + result.parameter[i] * ray.direction;
55 template <
typename Real>
61 rayDirection, cylinder, result);
68 std::array<Real, 2> rayInterval =
69 { (Real)0, std::numeric_limits<Real>::max() };
71 auto iiResult = iiQuery(result.parameter, rayInterval);
72 if (iiResult.intersect)
74 result.numIntersections = iiResult.numIntersections;
75 result.parameter = iiResult.overlap;
79 result.intersect =
false;
80 result.numIntersections = 0;
Result operator()(Type0 const &primitive0, Type1 const &primitive1)