1 #ifndef __JQUATERNION3D__ 
    2 #define __JQUATERNION3D__ 
   21 namespace JGEOMETRY3D {}
 
   22 namespace JPP { 
using namespace JGEOMETRY3D; }
 
   24 namespace JGEOMETRY3D {
 
   78       const double theta = atan2(
__u, 
__a) * y;
 
   96       return in >> quaternion.
__a >> quaternion.
__u;
 
  109       const JFormat format(out, getFormat<JQuaternion3D>(
JFormat_t(9, 6, std::ios::fixed | std::ios::showpos)));
 
  111       return out << format << quaternion.
__a << 
' ' 
  112                  << format << quaternion.
__u;
 
  125       return in >> quaternion.
__a >> quaternion.
__u;
 
  138       return out << quaternion.
__a << quaternion.
__u;
 
  304     public JMath  <JQuaternion3D>,
 
  305     public JMath  <JQuaternion3D, JQuaternion3X>,
 
  306     public JMath  <JQuaternion3D, JQuaternion3Y>,
 
  307     public JMath  <JQuaternion3D, JQuaternion3Z>,
 
  364       const double ct = cos(0.5*theta);
 
  365       const double st = sin(0.5*theta);
 
  533       return atan2(sqrt(this->
getB()*this->
getB() +
 
  794       return *
this = 
JQuaternion3D().setIdentity().mul(qz).mul(qy).mul(qx);
 
  805     void rotate(
double& __x, 
double& __y, 
double& __z)
 const 
  807       const double qx = 2.0 * (
__c*__z - 
__d*__y);
 
  808       const double qy = 2.0 * (
__d*__x - 
__b*__z);
 
  809       const double qz = 2.0 * (
__b*__y - 
__c*__x);
 
  826       const double qx = 2.0 * (
__d*__y - 
__c*__z);
 
  827       const double qy = 2.0 * (
__b*__z - 
__d*__x);
 
  828       const double qz = 2.0 * (
__c*__x - 
__b*__y);
 
  844                 const double         precision = std::numeric_limits<double>::min())
 const 
  846       return (fabs(
getA() - quaternion.
getA()) <= precision && 
 
  847               fabs(
getB() - quaternion.
getB()) <= precision &&
 
  848               fabs(
getC() - quaternion.
getC()) <= precision &&
 
  849               fabs(
getD() - quaternion.
getD()) <= precision);
 
  859     bool isIdentity(
const double precision = std::numeric_limits<double>::min())
 const 
  861       if (fabs(
getA()) <= precision) {
 
  863         if (fabs(
getB()) <= precision)
 
  864           return ((fabs(
getC())       <= precision && fabs(fabs(
getD()) - 1.0) <= precision)  ||
 
  865                   (fabs(fabs(
getC()) - 1.0) <= precision && fabs(
getD())       <= precision));
 
  867           return (fabs(fabs(
getB()) - 1.0) <= precision && 
 
  868                   fabs(
getC())             <= precision &&
 
  869                   fabs(
getD())             <= precision);
 
  873         return (fabs(fabs(
getA()) - 1.0) <= precision && 
 
  874                 fabs(
getB())             <= precision &&
 
  875                 fabs(
getC())             <= precision &&
 
  876                 fabs(
getD())             <= precision);
 
  911       return JQuaternion3D(quaternion).sub(*this).getLengthSquared();
 
  987         const double theta = atan2(v, 
getA());
 
 1007       const double MAXIMAL_DOT_PRODUCT = 0.9995;
 
 1015       double dot = v0.
getDot(v1);
 
 1023       double s0 = 1.0 - alpha;
 
 1025       if (dot <= MAXIMAL_DOT_PRODUCT) {
 
 1027         const double theta_0 = acos(dot);
 
 1028         const double theta_1 = theta_0 * alpha;
 
 1030         s1 = sin(theta_1) / sin(theta_0);
 
 1031         s0 = cos(theta_1) - dot * s1;
 
 1034       *
this = (s0 * v0)  +  (s1 * v1);
 
 1049       in >> quaternion.
__a;
 
 1050       in >> quaternion.
__b;
 
 1051       in >> quaternion.
__c;
 
 1052       in >> quaternion.
__d;
 
 1067       const JFormat format(out, getFormat<JQuaternion3D>(
JFormat_t(9, 6, std::ios::fixed | std::ios::showpos)));
 
 1069       out << format << quaternion.
getA() << 
' ' 
 1070           << format << quaternion.
getB() << 
' ' 
 1071           << format << quaternion.
getC() << 
' ' 
 1072           << format << quaternion.
getD();
 
 1087       in >> quaternion.
__a;
 
 1088       in >> quaternion.
__b;
 
 1089       in >> quaternion.
__c;
 
 1090       in >> quaternion.
__d;
 
 1105       out << quaternion.
__a;
 
 1106       out << quaternion.
__b;
 
 1107       out << quaternion.
__c;
 
 1108       out << quaternion.
__d;
 
 1166     double dot = (first.
getA() * second.
getA()  +
 
 1171     dot = 2.0 * dot * dot  -  1.0;
 
 1175     else if (dot < -1.0)
 
 1178       return 0.5 * acos(dot) * 180.0 / 
JMATH::PI;
 
double getDot(const JQuaternion3D &quaternion) const 
Get dot product. 
 
double getAngle(const JQuaternion3D &first, const JQuaternion3D &second)
Get space angle between quanternions. 
 
JQuaternion3D & pow(const double y)
Raise quaternion to given power. 
 
Interface for binary output. 
 
Q(UTCMax_s-UTCMin_s)-livetime_s
 
JQuaternion3X()
Default constructor. 
 
double getB() const 
Get b value. 
 
Auxiliary base class for aritmetic operations of derived class types. 
 
JQuaternion3D(const double theta, const JVersor3D &dir)
Constructor. 
 
JQuaternion2D()
Default constructor. 
 
JQuaternion3X(const double theta)
Constructor. 
 
This class represents a rotation around the x-axis. 
 
JQuaternion3D(const JQuaternion3X &qx)
Constructor. 
 
friend std::istream & operator>>(std::istream &in, JQuaternion2D &quaternion)
Write quaternion from input. 
 
double getB() const 
Get b value. 
 
JQuaternion3D getConjugate() const 
Get conjugate of this quaternion. 
 
decomposition(const JQuaternion3D &Q, const JVector3D &dir)
Constructor. 
 
bool isIdentity(const double precision=std::numeric_limits< double >::min()) const 
Test identity. 
 
JQuaternion3D getQuaternion() const 
Get quaternion. 
 
double getA() const 
Get a value. 
 
double getLengthSquared() const 
Get length squared. 
 
JQuaternion3D(const JQuaternion3Y &qy)
Constructor. 
 
void rotate_back(double &__x, double &__y, double &__z) const 
Rotate back. 
 
JQuaternion3D & add(const JQuaternion3D &quaternion)
Add quaternion. 
 
double getDistanceSquared(const JQuaternion3D &quaternion) const 
Get squared of distance to quaternion. 
 
JQuaternion3Z(const double theta)
Constructor. 
 
double getC() const 
Get c value. 
 
friend std::ostream & operator<<(std::ostream &out, const JQuaternion2D &quaternion)
Write quaternion to output. 
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Z &second)
Quaternion multiplication. 
 
JQuaternion3Z()
Default constructor. 
 
JQuaternion3D(const JQuaternion3Z &qz)
Constructor. 
 
JQuaternion3D & mul(const double factor)
Scale quaternion. 
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Y &second)
Quaternion multiplication. 
 
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
 
const JQuaternion3D & getQuaternion() const 
Get quaternion. 
 
JQuaternion3D & sub(const JQuaternion3D &quaternion)
Subtract quaternion. 
 
JQuaternion3Y()
Default constructor. 
 
JQuaternion3D swing
rotation around perpendicular axis 
 
JQuaternion3D(const double w, const JVector3D &dir)
Constructor. 
 
JQuaternion3D & interpolate(const JQuaternion3D &object, const double alpha)
Interpolation between quaternions. 
 
Data structure for vector in three dimensions. 
 
JQuaternion3D twist
rotation around parallel axis 
 
void setQuaternion(const JQuaternion3D &quaternion)
Set quaternion. 
 
This class represents a rotation. 
 
double getDY() const 
Get y direction. 
 
double getDX() const 
Get x direction. 
 
This class represents a rotation around the z-axis. 
 
Template definition of auxiliary base class for comparison of data structures. 
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3X &second)
Quaternion multiplication. 
 
static const double PI
Mathematical constants. 
 
static const JQuaternion3D & getIdentity()
Get identity quaternion. 
 
double getY() const 
Get y position. 
 
Interface for binary input. 
 
friend JReader & operator>>(JReader &in, JQuaternion2D &quaternion)
Read quaternion from input. 
 
double getD() const 
Get d value. 
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3D &second)
Quaternion multiplication. 
 
Data structure for unit quaternion in three dimensions. 
 
JQuaternion2D(const double theta)
Constructor. 
 
double getAngle() const 
Get rotation angle. 
 
JQuaternion3D & setIdentity()
Set to identity quaternion. 
 
JQuaternion3X & pow(const double y)
Raise quaternion to given power. 
 
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
This class represents a rotation around the y-axis. 
 
friend std::ostream & operator<<(std::ostream &out, const JQuaternion3D &quaternion)
Write quaternion to output. 
 
double getD() const 
Get d value. 
 
friend JReader & operator>>(JReader &in, JQuaternion3D &quaternion)
Read quaternion from input. 
 
double getC() const 
Get c value. 
 
double getX() const 
Get x position. 
 
JQuaternion3Z & pow(const double y)
Raise quaternion to given power. 
 
JQuaternion3D()
Default constructor. 
 
bool equals(const JQuaternion3D &quaternion, const double precision=std::numeric_limits< double >::min()) const 
Check equality. 
 
Base class for data structures with artithmetic capabilities. 
 
double getA() const 
Get a value. 
 
double getDot(const JVector3D &vector) const 
Get dot product. 
 
JQuaternion3D & normalise()
Normalise quaternion. 
 
JQuaternion3Y(const double theta)
Constructor. 
 
$WORKDIR ev_configure_domsimulator txt echo process $DOM_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DOM_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
 
JQuaternion3D(const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
Constructor. 
 
JQuaternion2D & pow(const double y)
Raise quaternion to given power. 
 
JQuaternion3D & mul(const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
Quaternion multiplication. 
 
Data structure for normalised vector in three dimensions. 
 
JQuaternion3D(const double a, const double b, const double c, const double d)
Constructor. 
 
Auxiliary data structure for decomposition of quaternion in twist and swing quaternions. 
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
 
JQuaternion3Y & pow(const double y)
Raise quaternion to given power. 
 
friend std::istream & operator>>(std::istream &in, JQuaternion3D &quaternion)
Write quaternion from input. 
 
JQuaternion3D & div(const double factor)
Scale quaternion. 
 
JQuaternion3D & negate()
Negate quaternion. 
 
double getZ() const 
Get z position. 
 
friend JWriter & operator<<(JWriter &out, const JQuaternion3D &quaternion)
Write quaternion to output. 
 
double getDZ() const 
Get z direction. 
 
void rotate(double &__x, double &__y, double &__z) const 
Rotate. 
 
JQuaternion3D & getQuaternion()
Get quaternion. 
 
double getDistance(const JQuaternion3D &quaternion) const 
Get distance to quaternion. 
 
friend JWriter & operator<<(JWriter &out, const JQuaternion2D &quaternion)
Write quaternion to output. 
 
double getLength() const 
Get length. 
 
JQuaternion3D & conjugate()
Conjugate quaternion.