// 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 WM4DISTVECTOR3TRIANGLE3_H #define WM4DISTVECTOR3TRIANGLE3_H #include "Wm4FoundationLIB.h" #include "Wm4Distance.h" #include "Wm4Triangle3.h" namespace Wm4 { template class WM4_FOUNDATION_ITEM DistVector3Triangle3 : public Distance > { public: DistVector3Triangle3 (const Vector3& rkVector, const Triangle3& rkTriangle); // object access const Vector3& GetVector () const; const Triangle3& GetTriangle () 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 triangle point. Real GetTriangleBary (int i) const; private: using Distance >::m_kClosestPoint0; using Distance >::m_kClosestPoint1; const Vector3& m_rkVector; const Triangle3& m_rkTriangle; // Information about the closest triangle point. Real m_afTriangleBary[3]; // closest1 = sum_{i=0}^2 bary[i]*tri.vertex[i] }; typedef DistVector3Triangle3 DistVector3Triangle3f; typedef DistVector3Triangle3 DistVector3Triangle3d; } #endif