Go to the documentation of this file.    1 #ifndef __JQUATERNION3D__ 
    2 #define __JQUATERNION3D__ 
   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);
 
  332       return static_cast<const JQuaternion3D&>(*
this);
 
  343       return static_cast<JQuaternion3D&>(*
this);
 
  354       static_cast<JQuaternion3D&>(*
this) = quaternion;
 
  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 getDZ() const
Get z direction.
 
bool equals(const JQuaternion3D &quaternion, const double precision=std::numeric_limits< double >::min()) const
Check equality.
 
JQuaternion3Y(const double theta)
Constructor.
 
Interface for binary input.
 
double getLengthSquared() const
Get length squared.
 
JQuaternion3D(const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
Constructor.
 
friend JWriter & operator<<(JWriter &out, const JQuaternion3D &quaternion)
Write quaternion to output.
 
JQuaternion3X()
Default constructor.
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Y &second)
Quaternion multiplicaion.
 
JQuaternion3D & mul(const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
Quaternion multiplicaion.
 
double getDistanceSquared(const JQuaternion3D &quaternion) const
Get squared of distance to quaternion.
 
JQuaternion3D(const double a, const double b, const double c, const double d)
Constructor.
 
JQuaternion2D()
Default constructor.
 
This class represents a rotation around the y-axis.
 
double getD() const
Get d value.
 
void rotate_back(double &__x, double &__y, double &__z) const
Rotate back.
 
Template definition of auxiliary base class for comparison of data structures.
 
JQuaternion3D & getQuaternion()
Get quaternion.
 
JQuaternion3X(const double theta)
Constructor.
 
JQuaternion3D(const double theta, const JVersor3D &dir)
Constructor.
 
friend std::istream & operator>>(std::istream &in, JQuaternion2D &quaternion)
Write quaternion from input.
 
Data structure for normalised vector in three dimensions.
 
friend std::ostream & operator<<(std::ostream &out, const JQuaternion2D &quaternion)
Write quaternion to output.
 
Auxiliary base class for aritmetic operations of derived class types.
 
double getA() const
Get a value.
 
JQuaternion3Y()
Default constructor.
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Z &second)
Quaternion multiplicaion.
 
JQuaternion3D & div(const double factor)
Scale quaternion.
 
JQuaternion3Z()
Default constructor.
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3X &second)
Quaternion multiplicaion.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
JQuaternion3Z(const double theta)
Constructor.
 
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3D &second)
Quaternion multiplicaion.
 
Data structure for vector in three dimensions.
 
JQuaternion3D()
Default constructor.
 
const JQuaternion3D & getQuaternion() const
Get quaternion.
 
Interface for binary output.
 
This class represents a rotation around the x-axis.
 
double getDX() const
Get x direction.
 
friend JReader & operator>>(JReader &in, JQuaternion2D &quaternion)
Read quaternion from input.
 
Data structure for quaternion in three dimensions.
 
double getLength() const
Get length.
 
double getDY() const
Get y direction.
 
double getB() const
Get b value.
 
friend std::ostream & operator<<(std::ostream &out, const JQuaternion3D &quaternion)
Write quaternion to output.
 
JQuaternion3D & sub(const JQuaternion3D &quaternion)
Subtract quaternion.
 
double getD() const
Get d value.
 
double getDistance(const JQuaternion3D &quaternion) const
Get distance to quaternion.
 
JQuaternion3D & conjugate()
Conjugate quaternion.
 
JQuaternion3D & setIdentity()
Set to identity matrix.
 
JQuaternion3D & negate()
Negate quaternion.
 
friend std::istream & operator>>(std::istream &in, JQuaternion3D &quaternion)
Write quaternion from input.
 
double getC() const
Get c value.
 
Auxiliary classes and methods for 3D geometrical objects and operations.
 
JQuaternion2D(const double theta)
Constructor.
 
friend JReader & operator>>(JReader &in, JQuaternion3D &quaternion)
Read quaternion from input.
 
double getB() const
Get b value.
 
double getC() const
Get c value.
 
double getDot(const JQuaternion3D &quaternion) const
Get dot product.
 
JQuaternion3D & add(const JQuaternion3D &quaternion)
Add quaternion.
 
This class represents a rotation.
 
friend JWriter & operator<<(JWriter &out, const JQuaternion2D &quaternion)
Write quaternion to output.
 
void setQuaternion(const JQuaternion3D &quaternion)
Set quaternion.
 
This class represents a rotation around the z-axis.
 
double getA() const
Get a value.
 
void rotate(double &__x, double &__y, double &__z) const
Rotate.
 
JQuaternion3D & mul(const double factor)
Scale quaternion.