Defines interface IParticle.
IRotation * createProduct(const IRotation &left, const IRotation &right)
Returns concatenated rotation (first right, then left).
Abstract base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal....
virtual std::vector< std::unique_ptr< IParticle > > decompose() const
Decompose in constituent IParticle objects.
IParticle * translate(R3 translation)
Translates the particle, and returns this.
const IRotation * rotation() const
Returns rotation object.
IParticle * rotate(const IRotation &rotation)
Rotates the particle, and returns this.
std::vector< const INode * > nodeChildren() const override
Returns all children.
IParticle * clone() const override=0
Returns a clone of this ISampleNode object.
std::unique_ptr< IRotation > m_rotation
void setRotation(const IRotation &rotation)
Sets transformation.