31 : m_material(
std::move(material)), m_form_factor(form_factor.clone())
38 : m_material(
std::move(material)), m_form_factor(form_factor.clone())
65 std::unique_ptr<IFormFactor> P_tem_ff(
70 double volume = P_tem_ff->volume();
72 P_ff->setMaterial(transformed_material);
74 result.
m_regions.push_back({volume, transformed_material});
Factory functions used to create material instances.
Defines IRotation classes.
Defines class SlicedParticle.
void setAbundance(double abundance)
Sets particle abundance.
void registerChild(INode *node)
void setName(const std::string &name)
std::vector< const INode * > getChildren() const override
Returns a vector of children.
void setPosition(kvector_t position)
Sets relative position of the particle's reference point in the coordinate system of parent.
const IRotation * rotation() const
Returns rotation object.
std::unique_ptr< IRotation > m_rotation
void setRotation(const IRotation &rotation)
Sets transformation.
void registerParticleProperties()
Registers abundance and position.
Abstract base class for rotations.
The identity rotation, which leaves everything in place.
A wrapper for underlying material implementation.
Material rotatedMaterial(const Transform3D &transform) const
A particle with a form factor and refractive index.
std::vector< const INode * > getChildren() const final
Returns a vector of children.
Particle * clone() const final
Returns a clone of this ISampleNode object.
const Material * material() const final
Returns nullptr, unless overwritten to return a specific material.
void setFormFactor(const IFormFactor &form_factor)
SlicedParticle createSlicedParticle(ZLimits limits) const final
Creates a sliced form factor for this particle.
void setMaterial(Material material)
std::unique_ptr< IFormFactor > m_form_factor
Class that contains upper and lower limits of the z-coordinate for the slicing of form factors.
Struct that contains information on a sliced particle.
std::vector< HomogeneousRegion > m_regions
std::unique_ptr< IFormFactor > m_slicedff