Real DistVector3Segment3<Real>::GetSquared (Real fT, const Vector3<Real>& rkVelocity0, const Vector3<Real>& rkVelocity1) { Vector3<Real> kMVector = m_rkVector + fT*rkVelocity0; Vector3<Real> kMOrigin = m_rkSegment.Origin + fT*rkVelocity1; Segment3<Real> kMSegment(kMOrigin,m_rkSegment.Direction, m_rkSegment.Extent); return DistVector3Segment3<Real>(kMVector,kMSegment).GetSquared(); }
Real DistRay2Segment2<Real>::GetSquared (Real fT, const Vector2<Real>& rkVelocity0, const Vector2<Real>& rkVelocity1) { Vector2<Real> kMOrigin0 = m_pkRay->Origin + fT*rkVelocity0; Vector2<Real> kMOrigin1 = m_pkSegment->Origin + fT*rkVelocity1; Ray2<Real> kMRay(kMOrigin0,m_pkRay->Direction); Segment2<Real> kMSegment(kMOrigin1,m_pkSegment->Direction, m_pkSegment->Extent); return DistRay2Segment2<Real>(kMRay,kMSegment).GetSquared(); }
Real DistSegment3Rectangle3<Real>::Get (Real fT, const Vector3<Real>& rkVelocity0, const Vector3<Real>& rkVelocity1) { Vector3<Real> kMOrigin = m_pkSegment->Origin + fT*rkVelocity0; Vector3<Real> kMCenter = m_pkRectangle->Center + fT*rkVelocity1; Segment3<Real> kMSegment(kMOrigin,m_pkSegment->Direction, m_pkSegment->Extent); Rectangle3<Real> kMRectangle(kMCenter,m_pkRectangle->Axis, m_pkRectangle->Extent); return DistSegment3Rectangle3<Real>(kMSegment,kMRectangle).Get(); }