22 template <
typename Real>
25 public TIQuery<Real, Segment2<Real>, AlignedBox2<Real>>
30 public TIQuery<Real, Segment2<Real>, AlignedBox2<Real>>::Result
39 template <
typename Real>
42 public FIQuery<Real, Segment2<Real>, AlignedBox2<Real>>
47 public FIQuery<Real, Segment2<Real>, AlignedBox2<Real>>::Result
61 template <
typename Real>
69 segment.GetCenteredForm(tmpOrigin, tmpDirection, segExtent);
73 Dot(diff, box.axis[0]),
74 Dot(diff, box.axis[1])
78 Dot(tmpDirection, box.axis[0]),
79 Dot(tmpDirection, box.axis[1])
83 this->DoQuery(segOrigin, segDirection, segExtent, box.extent, result);
87 template <
typename Real>
95 segment.GetCenteredForm(tmpOrigin, tmpDirection, segExtent);
99 Dot(diff, box.axis[0]),
100 Dot(diff, box.axis[1])
104 Dot(tmpDirection, box.axis[0]),
105 Dot(tmpDirection, box.axis[1])
109 this->DoQuery(segOrigin, segDirection, segExtent, box.extent, result);
110 for (
int i = 0; i < result.numIntersections; ++i)
114 result.point[i] = box.center + (segOrigin + result.parameter[i] * segDirection);
115 result.cdeParameter[i] = result.parameter[i];
118 result.parameter[i] = (result.parameter[i] / segExtent + (Real)1) * (Real)0.5;
std::array< Real, 2 > cdeParameter
DualQuaternion< Real > Dot(DualQuaternion< Real > const &d0, DualQuaternion< Real > const &d1)
Result operator()(Type0 const &primitive0, Type1 const &primitive1)