1 #ifndef __JQUATERNION3D__
2 #define __JQUATERNION3D__
19 namespace JGEOMETRY3D {}
20 namespace JPP {
using namespace JGEOMETRY3D; }
22 namespace JGEOMETRY3D {
77 return in >> quaternion.
__a >> quaternion.
__u;
90 return out << quaternion.
__a <<
' ' << quaternion.
__u;
103 return in >> quaternion.
__a >> quaternion.
__u;
116 return out << quaternion.
__a << quaternion.
__u;
240 public JMath <JQuaternion3D>,
241 public JMath <JQuaternion3D, JQuaternion3X>,
242 public JMath <JQuaternion3D, JQuaternion3Y>,
243 public JMath <JQuaternion3D, JQuaternion3Z>,
320 const double ct = cos(0.5*theta);
321 const double st = sin(0.5*theta);
625 return *
this =
JQuaternion3D().setIdentity().mul(qz).mul(qy).mul(qx);
637 return (
getA() == quaternion.
getA() &&
674 return JQuaternion3D(quaternion).sub(*this).getLengthSquared();
715 in >> quaternion.
__a;
716 in >> quaternion.
__b;
717 in >> quaternion.
__c;
718 in >> quaternion.
__d;
733 out << quaternion.
getA() <<
' '
734 << quaternion.
getB() <<
' '
735 << quaternion.
getC() <<
' '
736 << quaternion.
getD();
751 in >> quaternion.
__a;
752 in >> quaternion.
__b;
753 in >> quaternion.
__c;
754 in >> quaternion.
__d;
769 out << quaternion.
getA();
770 out << quaternion.
getB();
771 out << quaternion.
getC();
772 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.
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 multiplicaion.
JQuaternion3Z()
Default constructor.
JQuaternion3D & mul(const double factor)
Scale quaternion.
JQuaternion3D & mul(const JQuaternion3D &first, const JQuaternion3Y &second)
Quaternion multiplicaion.
JQuaternion3D & sub(const JQuaternion3D &quaternion)
Subtract quaternion.
JQuaternion3Y()
Default constructor.
Data structure for vector in three dimensions.
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 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.
bool equals(const JQuaternion3D &quaternion) const
Check equality.
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.
Base class for data structures with artithmetic capabilities.
double getA() const
Get a value.
JQuaternion3D(const JVersor3D &dir)
Constructor.
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.
JQuaternion3D(const JVector3D &pos)
Constructor.
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.