16 template <
typename Real>
29 template <
typename Real>
32 public FIQuery<Real, Line3<Real>, Plane3<Real>>
37 public FIQuery<Real, Line3<Real>, Plane3<Real>>::Result
52 template <
typename Real>
61 Real sdistance0 = vpQuery(segment.p[0], plane).signedDistance;
62 if (sdistance0 == (Real)0)
65 result.intersect =
true;
69 Real sdistance1 = vpQuery(segment.p[1], plane).signedDistance;
70 if (sdistance1 == (Real)0)
73 result.intersect =
true;
78 result.intersect = (sdistance0 * sdistance1 < (Real)0);
82 template <
typename Real>
89 segment.GetCenteredForm(segOrigin, segDirection, segExtent);
92 DoQuery(segOrigin, segDirection, segExtent, plane, result);
95 result.point = segOrigin + result.parameter * segDirection;
100 template <
typename Real>
106 segDirection, plane, result);
107 if (result.intersect)
111 if (
std::abs(result.parameter) > segExtent)
113 result.intersect =
false;
114 result.numIntersections = 0;
gte::BSNumber< UIntegerType > abs(gte::BSNumber< UIntegerType > const &number)
Result operator()(Type0 const &primitive0, Type1 const &primitive1)