19 template <
typename Real>
22 public FIQuery<Real, Line3<Real>, Cylinder3<Real>>
27 public FIQuery<Real, Line3<Real>, Cylinder3<Real>>::Result
42 template <
typename Real>
49 segment.GetCenteredForm(segOrigin, segDirection, segExtent);
52 DoQuery(segOrigin, segDirection, segExtent, cylinder, result);
53 for (
int i = 0; i < result.numIntersections; ++i)
55 result.point[i] = segOrigin + result.parameter[i] * segDirection;
60 template <
typename Real>
66 segDirection, cylinder, result);
74 std::array<Real, 2> segInterval = { -segExtent, segExtent };
76 auto iiResult = iiQuery(result.parameter, segInterval);
77 if (iiResult.intersect)
79 result.numIntersections = iiResult.numIntersections;
80 result.parameter = iiResult.overlap;
84 result.intersect =
false;
85 result.numIntersections = 0;
Result operator()(Type0 const &primitive0, Type1 const &primitive1)