Geant4 Cross Reference |
1 // -*- C++ -*- 1 2 // ------------------------------------------- 3 // 4 // This file is a part of the CLHEP - a Class 5 // 6 // ------------------------------------------- 7 // ------------------------------------------- 8 // 9 // AxisAngle.h - provide HepAxisAngle class 10 // 11 // History: 12 // 23-Jan-1998 WEB Initial draft 13 // 15-Jun-1998 WEB Added namespace support 14 // 02-May-2000 WEB No global using 15 // 27-Jul-2000 MF CLHEP version 16 // 17 // ------------------------------------------- 18 19 #ifndef HEP_AXISANGLE_H 20 #define HEP_AXISANGLE_H 21 22 #include <iostream> 23 #include "CLHEP/Vector/ThreeVector.h" 24 25 namespace CLHEP { 26 27 // Declarations of classes and global methods 28 class HepAxisAngle; 29 std::ostream & operator<<( std::ostream & os, 30 std::istream & operator>>( std::istream & is, 31 32 /** 33 * @author 34 * @ingroup vector 35 */ 36 class HepAxisAngle { 37 38 public: 39 typedef double Scalar; 40 41 protected: 42 typedef HepAxisAngle AA; // just an 43 static Scalar tolerance; // to determin 44 45 public: 46 47 // ---------- Constructors: 48 inline HepAxisAngle(); 49 inline HepAxisAngle( const Hep3Vector axis, 50 51 // ---------- Destructor, copy constructor, 52 // use C++ defaults 53 54 // ---------- Accessors: 55 56 public: 57 inline Hep3Vector getAxis() const 58 inline Hep3Vector axis() const; 59 inline AA & setAxis( const 60 61 inline double getDelta() const; 62 inline double delta() const ; 63 inline AA & setDelta( Scala 64 65 inline AA & set( const Hep3Vector axis, Scal 66 67 // ---------- Operations: 68 69 // comparisons: 70 inline int compare ( const AA & aa ) cons 71 72 inline bool operator==( const AA & aa ) cons 73 inline bool operator!=( const AA & aa ) cons 74 inline bool operator< ( const AA & aa ) cons 75 inline bool operator<=( const AA & aa ) cons 76 inline bool operator> ( const AA & aa ) cons 77 inline bool operator>=( const AA & aa ) cons 78 79 // relative comparison: 80 inline static double getTolerance(); 81 inline static double setTolerance( Scalar to 82 83 protected: 84 double distance( const HepAxisAngle & aa ) 85 public: 86 87 bool isNear ( const AA & aa, Scalar epsilon 88 double howNear( const AA & aa ) const; 89 90 // ---------- I/O: 91 92 friend std::ostream & operator<<( std::ostre 93 friend std::istream & operator>>( std::istre 94 95 private: 96 Hep3Vector axis_; // Note: After construct 97 double delta_; 98 99 }; // HepAxisAngle 100 101 102 } // namespace CLHEP 103 104 #include "CLHEP/Vector/AxisAngle.icc" 105 106 #endif // HEP_AXISANGLE_H 107