#ifndef __JTRANSFORMATION3D__ #define __JTRANSFORMATION3D__ #include "JGeometry3D/JPosition3D.hh" #include "JGeometry3D/JDirection3D.hh" #include "JGeometry3D/JRotation3D.hh" /** * \author mdejong */ namespace JGEOMETRY3D {} namespace JPP { using namespace JGEOMETRY3D; } namespace JGEOMETRY3D { /** * Transformation. * * This class defines the transformation of the coordinate system such that * the z-axis is along the given direction with the origin at the given position. */ struct JTransformation3D : public JPosition3D, public JRotation3D { /** * Constructor. * * \param pos position * \param dir direction */ JTransformation3D(const JPosition3D& pos, const JDirection3D& dir) : JPosition3D(pos), JRotation3D(dir) { this->getPosition().rotate(this->getRotation()); } /** * Transform position. * * \param pos position * \return position */ JPosition3D transform(const JPosition3D& pos) const { JPosition3D abc(pos); abc.transform(this->getRotation(), this->getPosition()); return abc; } /** * Transform back position. * * \param pos position * \return position */ JPosition3D transform_back(const JPosition3D& pos) const { JPosition3D abc(pos); abc.transform_back(this->getRotation(), this->getPosition()); return abc; } }; } #endif