capsule.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:1k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // capsule.h
  2. //
  3. // Implementation of a capsule bounding volume. A capsule is a sphere
  4. // swept along a line, parameterized in this class as a starting point,
  5. // an axis, and a radius. 
  6. //
  7. // Copyright (C) 2007, Chris Laurel <claurel@shatters.net>
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public License
  11. // as published by the Free Software Foundation; either version 2
  12. // of the License, or (at your option) any later version.
  13. #ifndef _CELMATH_CAPSULE_H_
  14. #define _CELMATH_CAPSULE_H_
  15. #include "vecmath.h"
  16. template<class T> class Capsule
  17. {
  18.  public:
  19.     Capsule();
  20.     Capsule(const Vector3<T>& _axis, T _radius);
  21.     Capsule(const Point3<T>& _origin, const Vector3<T>& _axis, T _radius);
  22.  
  23.  public:
  24.     Point3<T> origin;
  25.     Vector3<T> axis;
  26.     T radius;
  27. };
  28. typedef Capsule<float>   Capsulef;
  29. typedef Capsule<double>  Capsuled;
  30. template<class T> Capsule<T>::Capsule() :
  31.     origin(0, 0, 0), axis(0, 0, 0), radius(1)
  32. {
  33. }
  34. template<class T> Capsule<T>::Capsule(const Vector3<T>& _axis,
  35.       T _radius) :
  36.     origin(0, 0, 0), axis(_axis), radius(_radius)
  37. {
  38. }
  39. template<class T> Capsule<T>::Capsule(const Point3<T>& _origin,
  40.       const Vector3<T>& _axis,
  41.       T _radius) :
  42.     origin(_origin), axis(_axis), radius(_radius)
  43. {
  44. }
  45. #endif // _CELMATH_CAPSULE_H_