1 #ifndef __JQUATERNION3D__ 
    2 #define __JQUATERNION3D__ 
   20 namespace JGEOMETRY3D {}
 
   21 namespace JPP { 
using namespace JGEOMETRY3D; }
 
   23 namespace JGEOMETRY3D {
 
   78       return in >> quaternion.
__a >> quaternion.
__u;
 
   91       return out << quaternion.
__a << 
' ' << quaternion.
__u;
 
  104       return in >> quaternion.
__a >> quaternion.
__u;
 
  117       return out << quaternion.
__a << quaternion.
__u;
 
  241     public JMath  <JQuaternion3D>,
 
  242     public JMath  <JQuaternion3D, JQuaternion3X>,
 
  243     public JMath  <JQuaternion3D, JQuaternion3Y>,
 
  244     public JMath  <JQuaternion3D, JQuaternion3Z>,
 
  296       const double ct = cos(0.5*theta);
 
  297       const double st = sin(0.5*theta);
 
  634       return *
this = 
JQuaternion3D().setIdentity().mul(qz).mul(qy).mul(qx);
 
  645     void rotate(
double& __x, 
double& __y, 
double& __z)
 const 
  647       const double qx = 2.0 * (
__c*__z - 
__d*__y);
 
  648       const double qy = 2.0 * (
__d*__x - 
__b*__z);
 
  649       const double qz = 2.0 * (
__b*__y - 
__c*__x);
 
  651       const double x  = __x + 
__c*qz - 
__d*qy + 
__a*qx;
 
  652       const double y  = __y - 
__b*qz + 
__a*qy + 
__d*qx;
 
  653       const double z  = __z + 
__a*qz + 
__b*qy - 
__c*qx;
 
  670       const double qx = 2.0 * (
__d*__y - 
__c*__z);
 
  671       const double qy = 2.0 * (
__b*__z - 
__d*__x);
 
  672       const double qz = 2.0 * (
__c*__x - 
__b*__y);
 
  674       const double x  = __x - 
__c*qz + 
__d*qy + 
__a*qx;
 
  675       const double y  = __y + 
__b*qz + 
__a*qy - 
__d*qx;
 
  676       const double z  = __z + 
__a*qz - 
__b*qy + 
__c*qx;
 
  692                 const double         precision = std::numeric_limits<double>::min())
 const 
  694       return (fabs(
getA() - quaternion.
getA()) <= precision && 
 
  695               fabs(
getB() - quaternion.
getB()) <= precision &&
 
  696               fabs(
getC() - quaternion.
getC()) <= precision &&
 
  697               fabs(
getD() - quaternion.
getD()) <= precision);
 
  731       return JQuaternion3D(quaternion).sub(*this).getLengthSquared();
 
  772       in >> quaternion.
__a;
 
  773       in >> quaternion.
__b;
 
  774       in >> quaternion.
__c;
 
  775       in >> quaternion.
__d;
 
  790       out << quaternion.
getA() << 
' ' 
  791           << quaternion.
getB() << 
' ' 
  792           << quaternion.
getC() << 
' ' 
  793           << quaternion.
getD();
 
  808       in >> quaternion.
__a;
 
  809       in >> quaternion.
__b;
 
  810       in >> quaternion.
__c;
 
  811       in >> quaternion.
__d;
 
  826       out << quaternion.
getA();
 
  827       out << quaternion.
getB();
 
  828       out << quaternion.
getC();
 
  829       out << quaternion.
getD();
 
double getDot(const JQuaternion3D &quaternion) const 
Get dot product. 
 
Interface for binary output. 
 
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. 
 
friend std::istream & operator>>(std::istream &in, JQuaternion2D &quaternion)
Write quaternion from input. 
 
double getB() const 
Get b value. 
 
double getA() const 
Get a value. 
 
double getLengthSquared() const 
Get length squared. 
 
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
 
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. 
 
fi JEventTimesliceWriter a
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Z &second)
Quaternion multiplicaion. 
 
JQuaternion3Z()
Default constructor. 
 
JQuaternion3D & mul(const double factor)
Scale quaternion. 
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Y &second)
Quaternion multiplicaion. 
 
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. 
 
Data structure for vector in three dimensions. 
 
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. 
 
then print_variable DETECTOR INPUT_FILE INTERMEDIATE_FILE check_input_file $DETECTOR $INPUT_FILE check_output_file $INTERMEDIATE_FILE $OUTPUT_FILE JMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
Template definition of auxiliary base class for comparison of data structures. 
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3X &second)
Quaternion multiplicaion. 
 
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 multiplicaion. 
 
Data structure for quaternion in three dimensions. 
 
JQuaternion2D(const double theta)
Constructor. 
 
JQuaternion3D & setIdentity()
Set to identity matrix. 
 
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. 
 
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. 
 
JQuaternion3D & normalise()
Normalise quaternion. 
 
JQuaternion3Y(const double theta)
Constructor. 
 
JQuaternion3D(const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
Constructor. 
 
JQuaternion3D & mul(const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
Quaternion multiplicaion. 
 
Data structure for normalised vector in three dimensions. 
 
JQuaternion3D(const double a, const double b, const double c, const double d)
Constructor. 
 
friend std::istream & operator>>(std::istream &in, JQuaternion3D &quaternion)
Write quaternion from input. 
 
JQuaternion3D & div(const double factor)
Scale quaternion. 
 
JQuaternion3D & negate()
Negate quaternion. 
 
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.