Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Attributes | Friends | List of all members
JGEOMETRY3D::JQuaternion3D Class Reference

Data structure for quaternion in three dimensions. More...

#include <JQuaternion3D.hh>

Inheritance diagram for JGEOMETRY3D::JQuaternion3D:
JMATH::JMath< JFirst_t, JSecond_t > JMATH::JMath< JFirst_t, JSecond_t > JMATH::JMath< JFirst_t, JSecond_t > JMATH::JMath< JFirst_t, JSecond_t > JLANG::JEquals< JFirst_t, JSecond_t >

Public Member Functions

 JQuaternion3D ()
 Default constructor. More...
 
 JQuaternion3D (const double a, const double b, const double c, const double d)
 Constructor. More...
 
 JQuaternion3D (const JVector3D &pos)
 Constructor. More...
 
 JQuaternion3D (const JVersor3D &dir)
 Constructor. More...
 
 JQuaternion3D (const double theta, const JVersor3D &dir)
 Constructor. More...
 
 JQuaternion3D (const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
 Constructor. More...
 
 operator JVector3D () const
 Type conversion operator. More...
 
 operator JVersor3D () const
 Type conversion operator. More...
 
double getA () const
 Get a value. More...
 
double getB () const
 Get b value. More...
 
double getC () const
 Get c value. More...
 
double getD () const
 Get d value. More...
 
JQuaternion3DsetIdentity ()
 Set to identity matrix. More...
 
JQuaternion3Dconjugate ()
 Conjugate quaternion. More...
 
JQuaternion3Dnegate ()
 Negate quaternion. More...
 
JQuaternion3Dadd (const JQuaternion3D &quaternion)
 Add quaternion. More...
 
JQuaternion3Dsub (const JQuaternion3D &quaternion)
 Subtract quaternion. More...
 
JQuaternion3Dmul (const double factor)
 Scale quaternion. More...
 
JQuaternion3Ddiv (const double factor)
 Scale quaternion. More...
 
JQuaternion3Dmul (const JQuaternion3D &first, const JQuaternion3X &second)
 Quaternion multiplicaion. More...
 
JQuaternion3Dmul (const JQuaternion3D &first, const JQuaternion3Y &second)
 Quaternion multiplicaion. More...
 
JQuaternion3Dmul (const JQuaternion3D &first, const JQuaternion3Z &second)
 Quaternion multiplicaion. More...
 
JQuaternion3Dmul (const JQuaternion3D &first, const JQuaternion3D &second)
 Quaternion multiplicaion. More...
 
JQuaternion3Dmul (const JQuaternion3X &qx, const JQuaternion3Y &qy, const JQuaternion3Z &qz)
 Quaternion multiplicaion. More...
 
bool equals (const JQuaternion3D &quaternion) const
 Check equality. More...
 
double getLengthSquared () const
 Get length squared. More...
 
double getLength () const
 Get length. More...
 
double getDistanceSquared (const JQuaternion3D &quaternion) const
 Get squared of distance to quaternion. More...
 
double getDistance (const JQuaternion3D &quaternion) const
 Get distance to quaternion. More...
 
double getDot (const JQuaternion3D &quaternion) const
 Get dot product. More...
 
JFirst_t & mul (const JSecond_t &object)
 Multiply with object. More...
 

Protected Attributes

double __a
 
double __b
 
double __c
 
double __d
 

Friends

std::istream & operator>> (std::istream &in, JQuaternion3D &quaternion)
 Write quaternion from input. More...
 
std::ostream & operator<< (std::ostream &out, const JQuaternion3D &quaternion)
 Write quaternion to output. More...
 
JReaderoperator>> (JReader &in, JQuaternion3D &quaternion)
 Read quaternion from input. More...
 
JWriteroperator<< (JWriter &out, const JQuaternion3D &quaternion)
 Write quaternion to output. More...
 

Detailed Description

Data structure for quaternion in three dimensions.

This class implements the JMATH::JMath and JLANG::JEquals interfaces.

Definition at line 239 of file JQuaternion3D.hh.

Constructor & Destructor Documentation

JGEOMETRY3D::JQuaternion3D::JQuaternion3D ( )
inline

Default constructor.

Definition at line 257 of file JQuaternion3D.hh.

257  :
258  __a(0.0),
259  __b(0.0),
260  __c(0.0),
261  __d(0.0)
262  {}
JGEOMETRY3D::JQuaternion3D::JQuaternion3D ( const double  a,
const double  b,
const double  c,
const double  d 
)
inline

Constructor.

Parameters
aa value
bb value
cc value
dd value

Definition at line 273 of file JQuaternion3D.hh.

276  :
277  __a(a),
278  __b(b),
279  __c(c),
280  __d(d)
281  {}
JGEOMETRY3D::JQuaternion3D::JQuaternion3D ( const JVector3D pos)
inline

Constructor.

Parameters
posposition

Definition at line 289 of file JQuaternion3D.hh.

289  :
290  __a(0.0),
291  __b(pos.getX()),
292  __c(pos.getY()),
293  __d(pos.getZ())
294  {}
double getY() const
Get y position.
Definition: JVector3D.hh:102
double getX() const
Get x position.
Definition: JVector3D.hh:92
double getZ() const
Get z position.
Definition: JVector3D.hh:113
JGEOMETRY3D::JQuaternion3D::JQuaternion3D ( const JVersor3D dir)
inline

Constructor.

Parameters
dirdirection

Definition at line 302 of file JQuaternion3D.hh.

302  :
303  __a(0.0),
304  __b(dir.getDX()),
305  __c(dir.getDY()),
306  __d(dir.getDZ())
307  {}
double getDY() const
Get y direction.
Definition: JVersor3D.hh:101
double getDX() const
Get x direction.
Definition: JVersor3D.hh:90
double getDZ() const
Get z direction.
Definition: JVersor3D.hh:112
JGEOMETRY3D::JQuaternion3D::JQuaternion3D ( const double  theta,
const JVersor3D dir 
)
inline

Constructor.

This constructor represents a rotation around the given axis by the given angle.

Parameters
thetarotation angle [rad]
dirrotation axis

Definition at line 317 of file JQuaternion3D.hh.

319  {
320  const double ct = cos(0.5*theta);
321  const double st = sin(0.5*theta);
322 
323  __a = ct;
324  __b = st * dir.getDX();
325  __c = st * dir.getDY();
326  __d = st * dir.getDZ();
327  }
double getDY() const
Get y direction.
Definition: JVersor3D.hh:101
double getDX() const
Get x direction.
Definition: JVersor3D.hh:90
double getDZ() const
Get z direction.
Definition: JVersor3D.hh:112
JGEOMETRY3D::JQuaternion3D::JQuaternion3D ( const JQuaternion3X qx,
const JQuaternion3Y qy,
const JQuaternion3Z qz 
)
inline

Constructor.

Parameters
qxrotation around x-axis
qyrotation around y-axis
qzrotation around x-axis

Definition at line 337 of file JQuaternion3D.hh.

339  :
340  __a(1.0),
341  __b(0.0),
342  __c(0.0),
343  __d(0.0)
344  {
345  mul(qz).mul(qy).mul(qx);
346  }
JQuaternion3D & mul(const double factor)
Scale quaternion.

Member Function Documentation

JGEOMETRY3D::JQuaternion3D::operator JVector3D ( ) const
inline

Type conversion operator.

Returns
position

Definition at line 354 of file JQuaternion3D.hh.

355  {
356  return JVector3D(this->getB(), this->getC(), this->getD());
357  }
double getB() const
Get b value.
Data structure for vector in three dimensions.
Definition: JVector3D.hh:32
double getD() const
Get d value.
double getC() const
Get c value.
JGEOMETRY3D::JQuaternion3D::operator JVersor3D ( ) const
inline

Type conversion operator.

Returns
direction

Definition at line 365 of file JQuaternion3D.hh.

366  {
367  return JVersor3D(this->getB(), this->getC(), this->getD());
368  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
Data structure for normalised vector in three dimensions.
Definition: JVersor3D.hh:23
double JGEOMETRY3D::JQuaternion3D::getA ( ) const
inline

Get a value.

Returns
a value

Definition at line 376 of file JQuaternion3D.hh.

377  {
378  return __a;
379  }
double JGEOMETRY3D::JQuaternion3D::getB ( ) const
inline

Get b value.

Returns
b value

Definition at line 387 of file JQuaternion3D.hh.

388  {
389  return __b;
390  }
double JGEOMETRY3D::JQuaternion3D::getC ( ) const
inline

Get c value.

Returns
c value

Definition at line 398 of file JQuaternion3D.hh.

399  {
400  return __c;
401  }
double JGEOMETRY3D::JQuaternion3D::getD ( ) const
inline

Get d value.

Returns
d value

Definition at line 409 of file JQuaternion3D.hh.

410  {
411  return __d;
412  }
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::setIdentity ( )
inline

Set to identity matrix.

Returns
this quaternion

Definition at line 420 of file JQuaternion3D.hh.

421  {
422  __a = 1.0;
423  __b = 0.0;
424  __c = 0.0;
425  __d = 0.0;
426 
427  return *this;
428  }
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::conjugate ( )
inline

Conjugate quaternion.

Returns
this quaternion

Definition at line 436 of file JQuaternion3D.hh.

437  {
438  __b = -__b;
439  __c = -__c;
440  __d = -__d;
441 
442  return *this;
443  }
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::negate ( )
inline

Negate quaternion.

Returns
this quaternion

Definition at line 451 of file JQuaternion3D.hh.

452  {
453  __a = -__a;
454  __b = -__b;
455  __c = -__c;
456  __d = -__d;
457 
458  return *this;
459  }
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::add ( const JQuaternion3D quaternion)
inline

Add quaternion.

Parameters
quaternionquaternion
Returns
this quaternion

Definition at line 468 of file JQuaternion3D.hh.

469  {
470  __a += quaternion.getA();
471  __b += quaternion.getB();
472  __c += quaternion.getC();
473  __d += quaternion.getD();
474 
475  return *this;
476  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::sub ( const JQuaternion3D quaternion)
inline

Subtract quaternion.

Parameters
quaternionquaternion
Returns
this quaternion

Definition at line 485 of file JQuaternion3D.hh.

486  {
487  __a -= quaternion.getA();
488  __b -= quaternion.getB();
489  __c -= quaternion.getC();
490  __d -= quaternion.getD();
491 
492  return *this;
493  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::mul ( const double  factor)
inline

Scale quaternion.

Parameters
factormultiplication factor
Returns
this quaternion

Definition at line 502 of file JQuaternion3D.hh.

503  {
504  __a *= factor;
505  __b *= factor;
506  __c *= factor;
507  __d *= factor;
508 
509  return *this;
510  }
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::div ( const double  factor)
inline

Scale quaternion.

Parameters
factordivision factor
Returns
this quaternion

Definition at line 519 of file JQuaternion3D.hh.

520  {
521  __a /= factor;
522  __b /= factor;
523  __c /= factor;
524  __d /= factor;
525 
526  return *this;
527  }
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::mul ( const JQuaternion3D first,
const JQuaternion3X second 
)
inline

Quaternion multiplicaion.

This method evaluates the Hamilton product (also called cross product).

Parameters
firstfirst quaternion
secondsecond quaternion
Returns
this quaternion

Definition at line 539 of file JQuaternion3D.hh.

540  {
541  __a = first.getA() * second.getA() - first.getB() * second.getB();
542  __b = first.getA() * second.getB() + first.getB() * second.getA();
543  __c = first.getC() * second.getA() + first.getD() * second.getB();
544  __d = -first.getC() * second.getB() + first.getD() * second.getA();
545 
546  return *this;
547  }
double getB() const
Get b value.
double getB() const
Get b value.
double getA() const
Get a value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::mul ( const JQuaternion3D first,
const JQuaternion3Y second 
)
inline

Quaternion multiplicaion.

This method evaluates the Hamilton product (or cross product).

Parameters
firstfirst quaternion
secondsecond quaternion
Returns
this quaternion

Definition at line 559 of file JQuaternion3D.hh.

561  {
562  __a = first.getA() * second.getA() - first.getC() * second.getC();
563  __b = first.getB() * second.getA() - first.getD() * second.getC();
564  __c = first.getA() * second.getC() + first.getC() * second.getA();
565  __d = first.getB() * second.getC() + first.getD() * second.getA();
566 
567  return *this;
568  }
double getB() const
Get b value.
double getA() const
Get a value.
double getC() const
Get c value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::mul ( const JQuaternion3D first,
const JQuaternion3Z second 
)
inline

Quaternion multiplicaion.

This method evaluates the Hamilton product (or cross product).

Parameters
firstfirst quaternion
secondsecond quaternion
Returns
this quaternion

Definition at line 580 of file JQuaternion3D.hh.

582  {
583  __a = first.getA() * second.getA() - first.getD() * second.getD();
584  __b = first.getB() * second.getA() + first.getC() * second.getD();
585  __c = -first.getB() * second.getD() + first.getC() * second.getA();
586  __d = first.getA() * second.getD() + first.getD() * second.getA();
587 
588  return *this;
589  }
double getB() const
Get b value.
double getA() const
Get a value.
double getD() const
Get d value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::mul ( const JQuaternion3D first,
const JQuaternion3D second 
)
inline

Quaternion multiplicaion.

This method evaluates the Hamilton product (or cross product).

Parameters
firstfirst quaternion
secondsecond quaternion
Returns
this quaternion

Definition at line 601 of file JQuaternion3D.hh.

603  {
604  __a = first.getA() * second.getA() - first.getB() * second.getB() - first.getC() * second.getC() - first.getD() * second.getD();
605  __b = first.getA() * second.getB() + first.getB() * second.getA() + first.getC() * second.getD() - first.getD() * second.getC();
606  __c = first.getA() * second.getC() - first.getB() * second.getD() + first.getC() * second.getA() + first.getD() * second.getB();
607  __d = first.getA() * second.getD() + first.getB() * second.getC() - first.getC() * second.getB() + first.getD() * second.getA();
608 
609  return *this;
610  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JQuaternion3D& JGEOMETRY3D::JQuaternion3D::mul ( const JQuaternion3X qx,
const JQuaternion3Y qy,
const JQuaternion3Z qz 
)
inline

Quaternion multiplicaion.

Parameters
qxrotation around x-axis
qyrotation around y-axis
qzrotation around x-axis
Returns
this quaternion

Definition at line 621 of file JQuaternion3D.hh.

624  {
625  return *this = JQuaternion3D().setIdentity().mul(qz).mul(qy).mul(qx);
626  }
JQuaternion3D()
Default constructor.
bool JGEOMETRY3D::JQuaternion3D::equals ( const JQuaternion3D quaternion) const
inline

Check equality.

Parameters
quaternionquaternion
Returns
true if quaternions are equal; else false

Definition at line 635 of file JQuaternion3D.hh.

636  {
637  return (getA() == quaternion.getA() &&
638  getB() == quaternion.getB() &&
639  getC() == quaternion.getC() &&
640  getD() == quaternion.getD());
641  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
double JGEOMETRY3D::JQuaternion3D::getLengthSquared ( ) const
inline

Get length squared.

Returns
square of length

Definition at line 649 of file JQuaternion3D.hh.

650  {
651  return getA()*getA() + getB()*getB() + getC()*getC() + getD()*getD();
652  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
double JGEOMETRY3D::JQuaternion3D::getLength ( ) const
inline

Get length.

Returns
length

Definition at line 660 of file JQuaternion3D.hh.

661  {
662  return sqrt(getLengthSquared());
663  }
double getLengthSquared() const
Get length squared.
double JGEOMETRY3D::JQuaternion3D::getDistanceSquared ( const JQuaternion3D quaternion) const
inline

Get squared of distance to quaternion.

Parameters
quaternionquaternion
Returns
square of distance

Definition at line 672 of file JQuaternion3D.hh.

673  {
674  return JQuaternion3D(quaternion).sub(*this).getLengthSquared();
675  }
JQuaternion3D()
Default constructor.
double JGEOMETRY3D::JQuaternion3D::getDistance ( const JQuaternion3D quaternion) const
inline

Get distance to quaternion.

Parameters
quaternionquaternion
Returns
distance

Definition at line 684 of file JQuaternion3D.hh.

685  {
686  return sqrt(getDistanceSquared(quaternion));
687  }
double getDistanceSquared(const JQuaternion3D &quaternion) const
Get squared of distance to quaternion.
double JGEOMETRY3D::JQuaternion3D::getDot ( const JQuaternion3D quaternion) const
inline

Get dot product.

Parameters
quaternionquaternion
Returns
dot product

Definition at line 696 of file JQuaternion3D.hh.

697  {
698  return
699  getA() * quaternion.getA() -
700  getB() * quaternion.getB() -
701  getC() * quaternion.getC() -
702  getD() * quaternion.getD();
703  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
template<class JFirst_t, class JSecond_t = JNullType>
JFirst_t& JMATH::JMath< JFirst_t, JSecond_t >::mul ( const JSecond_t &  object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 273 of file JMath.hh.

274  {
275  return static_cast<JFirst_t&>(*this) = JCalculator<JFirst_t>::calculator.mul(static_cast<const JFirst_t&>(*this), object);
276  }
Auxiliary class for product evaluation of objects.
Definition: JCalculator.hh:18

Friends And Related Function Documentation

std::istream& operator>> ( std::istream &  in,
JQuaternion3D quaternion 
)
friend

Write quaternion from input.

Parameters
ininput stream
quaternionquaternion
Returns
input stream

Definition at line 713 of file JQuaternion3D.hh.

714  {
715  in >> quaternion.__a;
716  in >> quaternion.__b;
717  in >> quaternion.__c;
718  in >> quaternion.__d;
719 
720  return in;
721  }
std::ostream& operator<< ( std::ostream &  out,
const JQuaternion3D quaternion 
)
friend

Write quaternion to output.

Parameters
outoutput stream
quaternionquaternion
Returns
output stream

Definition at line 731 of file JQuaternion3D.hh.

732  {
733  out << quaternion.getA() << ' '
734  << quaternion.getB() << ' '
735  << quaternion.getC() << ' '
736  << quaternion.getD();
737 
738  return out;
739  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.
JReader& operator>> ( JReader in,
JQuaternion3D quaternion 
)
friend

Read quaternion from input.

Parameters
inreader
quaternionquaternion
Returns
reader

Definition at line 749 of file JQuaternion3D.hh.

750  {
751  in >> quaternion.__a;
752  in >> quaternion.__b;
753  in >> quaternion.__c;
754  in >> quaternion.__d;
755 
756  return in;
757  }
JWriter& operator<< ( JWriter out,
const JQuaternion3D quaternion 
)
friend

Write quaternion to output.

Parameters
outwriter
quaternionquaternion
Returns
writer

Definition at line 767 of file JQuaternion3D.hh.

768  {
769  out << quaternion.getA();
770  out << quaternion.getB();
771  out << quaternion.getC();
772  out << quaternion.getD();
773 
774  return out;
775  }
double getB() const
Get b value.
double getD() const
Get d value.
double getC() const
Get c value.
double getA() const
Get a value.

Member Data Documentation

double JGEOMETRY3D::JQuaternion3D::__a
protected

Definition at line 778 of file JQuaternion3D.hh.

double JGEOMETRY3D::JQuaternion3D::__b
protected

Definition at line 779 of file JQuaternion3D.hh.

double JGEOMETRY3D::JQuaternion3D::__c
protected

Definition at line 780 of file JQuaternion3D.hh.

double JGEOMETRY3D::JQuaternion3D::__d
protected

Definition at line 781 of file JQuaternion3D.hh.


The documentation for this class was generated from the following file: