18 template <
typename Real>
21 public FIQuery<Real, Line3<Real>, Cone3<Real>>
26 public FIQuery<Real, Line3<Real>, Cone3<Real>>::Result
40 template <
typename Real>
47 segment.GetCenteredForm(segOrigin, segDirection, segExtent);
50 DoQuery(segOrigin, segDirection, segExtent, cone, result);
54 result.point[0] = segOrigin + result.parameter[0] * segDirection;
55 result.point[1] = result.point[0];
58 result.point[0] = segOrigin + result.parameter[0] * segDirection;
59 result.point[1] = segOrigin + result.parameter[1] * segDirection;
67 template <
typename Real>
73 segDirection, cone, result);
81 std::array<Real, 2> segInterval = { -segExtent, segExtent };
83 auto iiResult = iiQuery(result.parameter, segInterval);
84 if (iiResult.intersect)
86 result.parameter = iiResult.overlap;
87 result.type = iiResult.numIntersections;
91 result.intersect =
false;
Result operator()(Type0 const &primitive0, Type1 const &primitive1)