// Wild Magic Source Code // David Eberly // http://www.geometrictools.com // Copyright (c) 1998-2007 // // This library is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation; either version 2.1 of the License, or (at // your option) any later version. The license is available for reading at // either of the locations: // http://www.gnu.org/copyleft/lgpl.html // http://www.geometrictools.com/License/WildMagicLicense.pdf // The license applies to versions 0 through 4 of Wild Magic. // // Version: 4.0.0 (2006/06/28) #ifndef WM4DISTVECTOR3SEGMENT3_H #define WM4DISTVECTOR3SEGMENT3_H #include "Wm4FoundationLIB.h" #include "Wm4Distance.h" #include "Wm4Segment3.h" namespace Wm4 { template class WM4_FOUNDATION_ITEM DistVector3Segment3 : public Distance > { public: DistVector3Segment3 (const Vector3& rkVector, const Segment3& rkSegment); // object access const Vector3& GetVector () const; const Segment3& GetSegment () const; // static distance queries virtual Real Get (); virtual Real GetSquared (); // function calculations for dynamic distance queries virtual Real Get (Real fT, const Vector3& rkVelocity0, const Vector3& rkVelocity1); virtual Real GetSquared (Real fT, const Vector3& rkVelocity0, const Vector3& rkVelocity1); // Information about the closest line point. Real GetSegmentParameter () const; private: using Distance >::m_kClosestPoint0; using Distance >::m_kClosestPoint1; const Vector3& m_rkVector; const Segment3& m_rkSegment; // Information about the closest segment point. Real m_fSegmentParameter; // closest1 = seg.origin+param*seg.direction }; typedef DistVector3Segment3 DistVector3Segment3f; typedef DistVector3Segment3 DistVector3Segment3d; } #endif