Geant4-11
RotationP.cc
Go to the documentation of this file.
1// -*- C++ -*-
2// ---------------------------------------------------------------------------
3//
4// This file is a part of the CLHEP - a Class Library for High Energy Physics.
5//
6// This is the implementation of methods of the HepRotation class which
7// were introduced when ZOOM PhysicsVectors was merged in, other than those
8// involving Euler or axis/angle representations, lengthy corrections of
9// the rotation matrix, or I/O.
10//
11
13
14#include <cmath>
15
16
17namespace CLHEP {
18
19void HepRotation::decompose(HepAxisAngle & rotation, Hep3Vector & boost)const {
20 boost.set(0,0,0);
21 rotation = axisAngle();
22}
23
24void HepRotation::decompose(Hep3Vector & boost, HepAxisAngle & rotation)const {
25 boost.set(0,0,0);
26 rotation = axisAngle();
27}
28
29double HepRotation::distance2( const HepRotation & r ) const {
30 double sum = rxx * r.rxx + rxy * r.rxy + rxz * r.rxz
31 + ryx * r.ryx + ryy * r.ryy + ryz * r.ryz
32 + rzx * r.rzx + rzy * r.rzy + rzz * r.rzz;
33 double answer = 3.0 - sum;
34 return (answer >= 0 ) ? answer : 0;
35}
36
37double HepRotation::howNear( const HepRotation & r ) const {
38 return std::sqrt( distance2( r ) );
39}
40
42 double epsilon) const {
43 return distance2( r ) <= epsilon*epsilon;
44}
45
46double HepRotation::norm2() const {
47 double answer = 3.0 - rxx - ryy - rzz;
48 return (answer >= 0 ) ? answer : 0;
49}
50
51} // namespace CLHEP
G4double epsilon(G4double density, G4double temperature)
void set(double x, double y, double z)
HepAxisAngle axisAngle() const
Definition: RotationA.cc:120
double distance2(const HepRotation &r) const
Definition: RotationP.cc:29
double norm2() const
Definition: RotationP.cc:46
void decompose(HepAxisAngle &rotation, Hep3Vector &boost) const
Definition: RotationP.cc:19
bool isNear(const HepRotation &r, double epsilon=Hep4RotationInterface::tolerance) const
Definition: RotationP.cc:41
double howNear(const HepRotation &r) const
Definition: RotationP.cc:37
Definition: DoubConv.h:17