PLaSK library

Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
plask::ArrangeContainer< dim > Struct Template Reference

Sequence container that repeats its child over a line shifted by a vector. More...

`#include <plask/geometry/lattice.hpp>`

Inheritance diagram for plask::ArrangeContainer< dim >:
[legend]
Collaboration diagram for plask::ArrangeContainer< dim >:
[legend]

## Public Types
typedef GeometryObjectTransform< dim > | BaseClass
typedef BaseClass::DVec | DVec
| Vector of doubles type in space on this, vector in space with dim number of dimensions.
typedef BaseClass::Box | Box
| Rectangle type in space on this, rectangle in space with dim number of dimensions.
typedef BaseClass::ChildType | ChildType
| Type of this child.
Public Types inherited from plask::GeometryObjectTransform< dim, Child_Type >
typedef GeometryObjectD< dim >::DVec | DVec
typedef GeometryObjectD< dim >::Box | Box
typedef Child_Type | ChildType
Public Types inherited from plask::GeometryObjectD< dim >
typedef Primitive< dim >::Box | Box
typedef Primitive< dim >::DVec | DVec
Public Types inherited from plask::GeometryObject
enum | Type { TYPE_LEAF = 0 , TYPE_TRANSFORM = 1 , TYPE_SPACE_CHANGER = 2 , TYPE_CONTAINER = 3 , TYPE_GEOMETRY = 4 , TYPE_SEPARATOR = 5 }
| Type of geometry object. More...
typedef std::function< bool(const GeometryObject &)> | Predicate
| Predicate on GeometryObject.

## Public Member Functions
| ArrangeContainer ()
| ArrangeContainer (const shared_ptr< ChildType > &child, const DVec &step, unsigned repeat, bool warn=true)
| Create a repeat object.
std::string | getTypeName () const override
| Get name of object type (like: "block2d", "shelf", "stack3d", etc.).
Box | getBoundingBox () const override
| Calculate minimal rectangle which contains all points of geometry object.
Box | getRealBoundingBox () const override
| Calculate minimal rectangle which contains all points of real geometry object.
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path=0) const override
| Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.
void | getObjectsToVec (const GeometryObject::Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const override
| Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.
void | getPositionsToVec (const GeometryObject::Predicate &predicate, std::vector< DVec > &dest, const PathHints *path=0) const override
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally marked by path.
bool | contains (const DVec &p) const override
| Check if this geometry object contains point.
shared_ptr< Material > | getMaterial (const DVec &p) const override
| Return material in a given point inside the geometry object.
std::size_t | getChildrenCount () const override
| Get number of all children of this in geometry graph.
shared_ptr< GeometryObject > | getChildNo (std::size_t child_no) const override
| Get child with given index.
std::size_t | getRealChildrenCount () const override
| Get number of real (physically stored) children in geometry graph.
shared_ptr< GeometryObject > | getRealChildNo (std::size_t child_no) const override
| Get real (physically stored) child with given index.
GeometryObject::Subtree | getPathsAt (const DVec &point, bool all=false) const override
| Find all paths to objects which lies at given `point`.
shared_ptr< GeometryObject > | shallowCopy () const override
| Get shallow copy of this.
Box | fromChildCoords (const typename ChildType::Box &child_bbox) const override
| Convert bounding box from child's to this's coordinates.
unsigned | getRepeatCount () const
void | setRepeatCount (unsigned new_repeat_count)
DVec | getTranslation () const
void | setTranslation (DVec new_translation)
void | addPointsAlongToSet (std::set< double > &points, Primitive< 3 >::Direction direction, unsigned max_steps, double min_step_size) const override
void | addLineSegmentsToSet (std::set< typename GeometryObjectD< dim >::LineSegment > &segments, unsigned max_steps, double min_step_size) const override
void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const override
| Append XML attributes of this to `dest_xml_object`.
void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const
| Append XML attributes of this to `dest_xml_object`.
void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const
| Append XML attributes of this to `dest_xml_object`.
void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const
| Append XML attributes of this to `dest_xml_object`.
void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const
| Append XML attributes of this to `dest_xml_object`.
shared_ptr< ChildType > | getChild () const
| Get child.
Public Member Functions inherited from plask::GeometryObjectTransform< dim, Child_Type >
| GeometryObjectTransform (shared_ptr< ChildType > child=nullptr)
| GeometryObjectTransform (ChildType &child)
virtual | ~GeometryObjectTransform ()
GeometryObject::Type | getType () const override
| Check if geometry is: leaf, transform or container type object.
void | getObjectsToVec (const GeometryObject::Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const override
| Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.
virtual void | onChildChanged (const GeometryObject::Event &evt)
| Called by child.change signal, call this change.
void | connectOnChildChanged ()
| Connect onChildChanged to current child change signal.
void | disconnectOnChildChanged ()
| Disconnect onChildChanged from current child change signal.
shared_ptr< ChildType > | getChild () const
| Get child.
void | setChildUnsafe (const shared_ptr< ChildType > &child)
| Set new child.
void | setChild (const shared_ptr< ChildType > &child)
| Set new child.
bool | hasChild () const
void | validate () const override
| Throws NoChildException if child is not set.
bool | hasInSubtree (const GeometryObject &el) const override
| Check if el is in subtree with `this` in root.
GeometryObject::Subtree | getPathsTo (const GeometryObject &el, const PathHints *path=0) const override
| Find paths to el.
std::size_t | getChildrenCount () const override
| Get number of all children of this in geometry graph.
shared_ptr< GeometryObject > | getChildNo (std::size_t child_no) const override
| Get child with given index.
shared_ptr< GeometryObjectTransform< dim, Child_Type > > | shallowCopyWithChild (const shared_ptr< ChildType > &child) const
| Get copy of this, and change child in the copy,.
shared_ptr< GeometryObject > | deepCopy (std::map< const GeometryObject *, shared_ptr< GeometryObject > > &copied) const override
| Get deep copy of this.
shared_ptr< const GeometryObject > | changedVersion (const GeometryObject::Changer &changer, Vec< 3, double > *translation=0) const override
| Get this or copy of this with some changes in subtree.
void | removeAtUnsafe (std::size_t) override
| Remove child at given `index`.
Box | getBoundingBox () const override
| Calculate minimal rectangle which contains all points of geometry object.
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path) const override
| Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.
bool | childHasType (GeometryObject::Type type) const
| Check if child of this has given type.
Public Member Functions inherited from plask::GeometryObjectD< dim >
int | getDimensionsCount () const override
| Get number of dimensions.
virtual DVec | getBoundingBoxSize () const
shared_ptr< Material > | getMaterialOrAir (const DVec &p) const
| Return material in a given point inside the geometry object.
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints &path) const
| Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, marked by path.
std::vector< Box > | getBoundingBoxes (const GeometryObject::Predicate &predicate, const PathHints *path=0) const
| Calculate the vector of bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.
std::vector< Box > | getBoundingBoxes (const GeometryObject::Predicate &predicate, const PathHints &path)
| Calculate the vector of bounding boxes of all nodes which fulfill given `predicate`, marked by path.
void | getLeafsBoundingBoxesToVec (std::vector< Box > &dest, const PathHints *path=0) const
| Calculate and append to vector bounding boxes of all leafs, optionally marked by path.
void | getLeafsBoundingBoxesToVec (std::vector< Box > &dest, const PathHints &path) const
| Calculate and append to vector bounding boxes of all leafs, marked by path.
std::vector< Box > | getLeafsBoundingBoxes (const PathHints *path=0) const
| Calculate bounding boxes of all leafs, optionally marked by path.
std::vector< Box > | getLeafsBoundingBoxes (const PathHints &path) const
| Calculate bounding boxes of all leafs, marked by path.
void | getObjectBoundingBoxesToVec (std::vector< Box > &dest, const GeometryObject &object, const PathHints *path=0) const
| Calculate and append to vector bounding boxes of all instances of given `object`, optionally marked by path.
void | getObjectBoundingBoxesToVec (std::vector< Box > &dest, const GeometryObject &object, const PathHints &path) const
| Calculate and append to vector bounding boxes of all instances of given `object`, marked by path.
std::vector< Box > | getObjectBoundingBoxes (const GeometryObject &object, const PathHints *path=0) const
| Calculate bounding boxes of all instances of given `object`, optionally marked by path.
std::vector< Box > | getObjectBoundingBoxes (const GeometryObject &object, const PathHints &path) const
| Calculate bounding boxes of all instances of given `objects`, marked by `path`.
void | getPositionsToVec (const Predicate &predicate, std::vector< DVec > &dest, const PathHints &path) const
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, marked by path.
std::vector< DVec > | getPositions (const Predicate &predicate, const PathHints *path=0) const
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally marked by path.
std::vector< DVec > | getPositions (const Predicate &predicate, const PathHints &path) const
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, marked by path.
void | getLeafsPositionsToVec (std::vector< DVec > &dest, const PathHints *path=0) const
| Calculate and append to vector positions of all leafs, optionally marked by path.
void | getLeafsPositionsToVec (std::vector< DVec > &dest, const PathHints &path) const
| Calculate and append to vector positions of all leafs, marked by path.
std::vector< DVec > | getLeafsPositions (const PathHints *path=0) const
| Calculate and return a vector of positions of all leafs, optionally marked by path.
std::vector< DVec > | getLeafsPositions (const PathHints &path) const
| Calculate and return a vector of positions of all leafs, marked by path.
void | getObjectPositionsToVec (std::vector< DVec > &dest, const GeometryObject &object, const PathHints *path=0) const
| Calculate and append to vector positions of all instances of given `object`, optionally marked by path.
void | getObjectPositionsToVec (std::vector< DVec > &dest, const GeometryObject &object, const PathHints &path) const
| Calculate and append to vector positions of all instances of given `object`, marked by path.
std::vector< DVec > | getObjectPositions (const GeometryObject &object, const PathHints *path=0) const
| Calculate and return a vector of positions of all instances of given `object`, optionally marked by path.
std::vector< DVec > | getObjectPositions (const GeometryObject &object, const PathHints &path) const
| Calculate and return a vector of positions of all instances of given `object`, marked by path.
shared_ptr< const GeometryObject > | getMatchingAt (const DVec &point, const Predicate &predicate, const PathHints *path=0) const
| Get object closest to the root, which contains specific point and fulfills the predicate.
shared_ptr< const GeometryObject > | getMatchingAt (const DVec &point, const Predicate &predicate, const PathHints &path) const
| Get object closest to the root, which contains specific point and fulfills the predicate.
bool | objectIncludes (const GeometryObject &object, const PathHints *path, const DVec &point) const
| Check if specified geometry object contains a point point.
bool | objectIncludes (const GeometryObject &object, const PathHints &path, const DVec &point) const
| Check if specified geometry object contains a point point.
bool | objectIncludes (const GeometryObject &object, const DVec &point) const
| Check if specified geometry object contains a point point.
std::set< std::string > | getRolesAt (const DVec &point, const plask::PathHints *path=0) const
| Get a sum of roles sets of all objects which lies on path from this to leaf at given `point`.
std::set< std::string > | getRolesAt (const DVec &point, const plask::PathHints &path) const
| Get a sum of roles sets of all objects which lies on path from this to leaf at given `point`.
shared_ptr< const GeometryObject > | hasRoleAt (const std::string &role_name, const DVec &point, const plask::PathHints *path=0) const
| Check if any object at given `point`, not hidden by another object, plays role with given name `role_name` (if so, returns non-nullptr).
shared_ptr< const GeometryObject > | hasRoleAt (const std::string &role_name, const DVec &point, const plask::PathHints &path) const
| Check if any object at given `point`, not hidden by another object, plays role with given name `role_name` (if so, returns non-nullptr).
virtual void | addLineSegmentsToSet (std::set< LineSegment > &PLASK_UNUSED(segments), unsigned PLASK_UNUSED(max_steps), double PLASK_UNUSED(min_step_size)) const =0
| Add characteristic points to the set and edges connecting them.
std::set< LineSegment > | getLineSegments (unsigned max_steps=PLASK_GEOMETRY_MAX_STEPS, double min_step_size=PLASK_GEOMETRY_MIN_STEP_SIZE) const
| Add characteristic points to the set and edges connecting them.
Public Member Functions inherited from plask::GeometryObject
void | setMaxSteps (unsigned value)
| Set max_steps.
void | setMinStepSize (double value)
| Set min_step_size.
template<typename ClassT , typename methodT >
boost::signals2::connection | changedConnectMethod (ClassT *obj, methodT method, boost::signals2::connect_position at=boost::signals2::at_back)
| Connect a method to changed signal.
template<typename ClassT , typename methodT >
void | changedDisconnectMethod (ClassT *obj, methodT method)
| Disconnect a method from changed signal.
template<typename EventT = Event, typename... Args>
void | fireChanged (Args &&... event_constructor_params_without_source)
| Call changed with this as event source.
| GeometryObject (const GeometryObject &to_copy)
| Initialize this to be the same as `to_copy` but doesn't have any changes observer.
GeometryObject & | operator= (const GeometryObject &to_copy)
| Set this to be the same as `to_copy` but doesn't change changes observer.
| GeometryObject ()
| GeometryObject (unsigned max_steps, double min_step_size)
virtual | ~GeometryObject ()
| Virtual destructor.
virtual void | writeXML (XMLWriter::Element &parent_xml_object, WriteXMLCallback &write_cb, AxisNames parent_axes) const
| Write geometry tree branch rooted by this to XML.
void | writeXML (XMLWriter::Element &parent_xml_object, WriteXMLCallback &write_cb) const
| Write geometry tree branch rooted by this to XML.
void | writeXML (XMLWriter::Element &parent_xml_object) const
| Write geometry tree branch rooted by this to XML.
template<int DIMS>
shared_ptr< GeometryObjectD< DIMS > > | asD ()
| Cast this to GeometryObjectD<DIMS>.
template<int DIMS>
shared_ptr< const GeometryObjectD< DIMS > > | asD () const
| Cast this to GeometryObjectD<DIMS> (const version).
shared_ptr< Geometry > | asGeometry ()
| Cast this to Geometry.
shared_ptr< const Geometry > | asGeometry () const
| Cast this to Geometry.
bool | isLeaf () const
bool | isTransform () const
bool | isSpaceChanger () const
bool | isContainer () const
bool | isGeometry () const
virtual void | addPointsAlongToSet (std::set< double > &points, Primitive< 3 >::Direction PLASK_UNUSED(direction), unsigned PLASK_UNUSED(max_steps), double PLASK_UNUSED(min_step_size)) const =0
| Add characteristic points information along specified axis to set.
std::set< double > | getPointsAlong (Primitive< 3 >::Direction direction, unsigned max_steps=PLASK_GEOMETRY_MAX_STEPS, double min_step_size=PLASK_GEOMETRY_MIN_STEP_SIZE) const
| Get characteristic points information along specified axis.
bool | hasRole (std::string role_name) const
| Check if this object belongs to class (has tag) with name `role_name`.
void | addRole (std::string role_name)
| Add this to given class.
void | removeRole (std::string role_name)
| Remove this from given class, do nothing if this is not in given class.
void | clearRoles ()
| Clear set of roles of this.
bool | hasInSubtree (const GeometryObject &el, const PathHints *pathHints) const
bool | hasInSubtree (shared_ptr< const GeometryObject > el, const PathHints *pathHints) const
void | getObjectsToVec (const Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints &path) const
| Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.
std::vector< shared_ptr< const GeometryObject > > | getObjects (const Predicate &predicate, const PathHints *path=0) const
| Get vector of all objects from subtree with this in root, which fulfill predicate.
std::vector< shared_ptr< const GeometryObject > > | getObjects (const Predicate &predicate, const PathHints &path) const
| Get vector of all objects from subtree with this in root, which fulfill predicate.
void | getLeafsToVec (std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const
| Append all leafs in subtree with this in root to vector `dest`.
void | getLeafsToVec (std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints &path) const
| Append all leafs in subtree with this in root to vector `dest`.
std::vector< shared_ptr< const GeometryObject > > | getLeafs (const PathHints *path=0) const
| Get all leafs in subtree with this object as root.
std::vector< shared_ptr< const GeometryObject > > | getLeafs (const PathHints &path) const
| Get all leafs in subtree with this object as root.
void | getObjectsWithRoleToVec (const std::string &role, std::vector< shared_ptr< const GeometryObject > > &dest) const
| Append all objects with a specified role in subtree with this in root to vector `dest`.
std::vector< shared_ptr< const GeometryObject > > | getObjectsWithRole (const std::string &role) const
| Get all objects with a specified role in subtree with this object as root.
void | removeAt (std::size_t index)
| Remove child at given `index`.
void | removeRangeUnsafe (std::size_t index_begin, std::size_t index_end)
bool | removeRange (std::size_t index_begin, std::size_t index_end)
| Remove all children in given range [index_begin, index_end).
virtual void | forEachRealObjectInSubtree (std::function< bool(const GeometryObject &)> callback) const
| Call a `callback` for each object in subtree with `this` in root.
FunctorIndexedIterator< ChildGetter > | begin () const
FunctorIndexedIterator< ChildGetter > | end () const
shared_ptr< GeometryObject > | deepCopy ()
| Get deep copy of this.
bool | canHasAsChild (const GeometryObject &potential_child) const
bool | canHasAsParent (const GeometryObject &potential_parent) const
void | ensureCanHasAsParent (const GeometryObject &potential_parent) const
| Throw CyclicReferenceException if `potential_parent` is in subtree with this in root.
void | ensureCanHaveAsChild (const GeometryObject &potential_child) const
| Throw CyclicReferenceException if `potential_child` has this in subtree.

## Public Attributes
bool | warn_overlapping
| Should the user be warned about overlapping bounding boxes?
Public Attributes inherited from plask::GeometryObject
unsigned | max_steps
| Maximum number of points to split a single leaf.
double | min_step_size
| Minimum distance between divisions for a single leaf.
std::set< std::string > | roles
| Roles/tags.
boost::signals2::signal< void(Event &)> | changed
| Changed signal, fired when object was changed.

## Static Public Attributes
static const char * | NAME = dim == 2 ? PLASK_ARRANGE2D_NAME : PLASK_ARRANGE3D_NAME
Static Public Attributes inherited from plask::GeometryObjectD< dim >
static const int | DIM = dim

## Protected Member Functions
std::pair< int, int > | bounds (const DVec &vec) const
| Reduce vector to the first repetition.
void | warmOverlaping () const
| Warm if warn_overlapping is set and item bboxes overlap.
Protected Member Functions inherited from plask::GeometryObject
virtual void | writeXMLChildren (XMLWriter::Element &dest_xml_object, WriteXMLCallback &write_cb, const AxisNames &axes) const
| Append all children of this to XML `dest_xml_object`.
void | ensureIsValidChildNr (std::size_t child_no, const char *method_name="getChildNo", const char *arg_name="child_no") const
| Check if given `index` is valid child index and throw exception of it is not.
void | ensureIsValidInsertPosition (std::size_t child_no, const char *method_name="insert", const char *arg_name="pos") const
| Check if given `index` is valid insert index and throw exception of it is not.
void | fireChildrenChanged ()
| Inform observers that children list was changed (also that this is resized)
void | fireChildrenRemoved (std::size_t beginIndex, std::size_t endIndex)
void | fireChildrenInserted (std::size_t beginIndex, std::size_t endIndex)

## Protected Attributes
DVec | translation
| Translation vector for each repetition.
unsigned | repeat_count
| Number of repetitions.
shared_ptr< ChildType > | _child
Protected Attributes inherited from plask::GeometryObjectTransform< dim, Child_Type >
shared_ptr< ChildType > | _child

## Additional Inherited Members
Static Public Member Functions inherited from plask::GeometryObject
static bool | PredicateIsLeaf (const GeometryObject &el)
| Predicate which check if given object is leaf.
Static Protected Member Functions inherited from plask::GeometryObjectTransform< dim, Child_Type >
template<typename ThisType >
static void | _getNotChangedPositionsToVec (ThisType _this, const GeometryObject::Predicate &predicate, std::vector< DVec > &dest, const PathHints *path)
| Possible implementation for getPositionsToVec, which does not change children position and is used by many subclasses.

## Detailed Description

template<int dim>
struct plask::ArrangeContainer< dim >

Sequence container that repeats its child over a line shifted by a vector.

You can consider this as a one-dimensional lattice

Definition at line 29 of file lattice.hpp.

## Member Typedef Documentation

## ◆ BaseClass

template<int dim>

typedef GeometryObjectTransform<dim> plask::ArrangeContainer< dim >::BaseClass

Definition at line 30 of file lattice.hpp.

## ◆ Box

template<int dim>

typedef BaseClass::Box plask::ArrangeContainer< dim >::Box

Rectangle type in space on this, rectangle in space with dim number of dimensions.

Definition at line 36 of file lattice.hpp.

## ◆ ChildType

template<int dim>

typedef BaseClass::ChildType plask::ArrangeContainer< dim >::ChildType

Type of this child.

Definition at line 39 of file lattice.hpp.

## ◆ DVec

template<int dim>

typedef BaseClass::DVec plask::ArrangeContainer< dim >::DVec

Vector of doubles type in space on this, vector in space with dim number of dimensions.

Definition at line 33 of file lattice.hpp.

## Constructor & Destructor Documentation

## ◆ ArrangeContainer() [1/2]

template<int dim>

plask::ArrangeContainer< dim >::ArrangeContainer | ( |  | ) |
| inline

Definition at line 62 of file lattice.hpp.

## ◆ ArrangeContainer() [2/2]

template<int dim>

plask::ArrangeContainer< dim >::ArrangeContainer | ( | const shared_ptr< ChildType > & | child,
|  | const DVec & | step,
|  | unsigned | repeat,
|  | bool | warn = `true`
| ) |  |
| inline

Create a repeat object.

Parameters

  item | Object to repeat.
  step | Vector, by which each repetition is shifted from the previous one.
  count | Number of repetitions.

Definition at line 72 of file lattice.hpp.

## Member Function Documentation

## ◆ addLineSegmentsToSet()

template<int dim>

void plask::ArrangeContainer< dim >::addLineSegmentsToSet | ( | std::set< typename GeometryObjectD< dim >::LineSegment > & | segments,
|  | unsigned | max_steps,
|  | double | min_step_size
| ) |  | const
| override

Definition at line 216 of file lattice.cpp.

## ◆ addPointsAlongToSet()

template<int dim>

void plask::ArrangeContainer< dim >::addPointsAlongToSet | ( | std::set< double > & | points,
|  | Primitive< 3 >::Direction | direction,
|  | unsigned | max_steps,
|  | double | min_step_size
| ) |  | const
| override

Definition at line 201 of file lattice.cpp.

## ◆ bounds()

template<int dim>

std::pair< int, int > plask::ArrangeContainer< dim >::bounds | ( | const DVec & | vec | ) | const
| protected

Reduce vector to the first repetition.

Definition at line 33 of file lattice.cpp.

## ◆ contains()

template<int dim>

bool plask::ArrangeContainer< dim >::contains | ( | const DVec & | point | ) | const
| override virtual

Check if this geometry object contains point.

Parameters

  point | point in local coordinates

Returns
  true only if this geometry contains point p

Implements plask::GeometryObjectD< dim >.

Definition at line 131 of file lattice.cpp.

## ◆ fromChildCoords()

template<int dim>

ArrangeContainer< dim >::Box plask::ArrangeContainer< dim >::fromChildCoords | ( | const typename ChildType::Box & | child_bbox | ) | const
| override virtual

Convert bounding box from child's to this's coordinates.

Parameters

  child_bbox | bounding box of child

Returns
  `child_bbox` converted to this's coordinates

Implements plask::GeometryObjectTransform< dim, Child_Type >.

Definition at line 195 of file lattice.cpp.

## ◆ getBoundingBox()

template<int dim>

ArrangeContainer< dim >::Box plask::ArrangeContainer< dim >::getBoundingBox | ( |  | ) | const
| override virtual

Calculate minimal rectangle which contains all points of geometry object.

Returns
  calculated rectangle

Implements plask::GeometryObjectD< dim >.

Definition at line 59 of file lattice.cpp.

## ◆ getBoundingBoxesToVec()

template<int dim>

void plask::ArrangeContainer< dim >::getBoundingBoxesToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< Box > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| override virtual

Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.

Parameters

  predicate |
  dest | place to add result, bounding boxes will be added in the same order which is generated by GeometryObject::getObjects
  path | path (optional) path hints which limits search space

Implements plask::GeometryObjectD< dim >.

Definition at line 84 of file lattice.cpp.

## ◆ getChild()

template<int dim>

shared_ptr< ChildType > plask::GeometryObjectTransform< dim, Child_Type >::getChild | ( |  | ) | const
| inline

Get child.

Returns
  child

Definition at line 85 of file transform.hpp.

## ◆ getChildNo()

template<int dim>

shared_ptr< GeometryObject > plask::ArrangeContainer< dim >::getChildNo | ( | std::size_t | child_no | ) | const
| override virtual

Get child with given index.

Parameters

  child_no | index of child to get

Returns
  child with index `child_no`

Implements plask::GeometryObject.

Definition at line 152 of file lattice.cpp.

## ◆ getChildrenCount()

template<int dim>

std::size_t plask::ArrangeContainer< dim >::getChildrenCount | ( |  | ) | const
| override virtual

Get number of all children of this in geometry graph.

Returns
  number of children

Implements plask::GeometryObject.

Definition at line 148 of file lattice.cpp.

## ◆ getMaterial()

template<int dim>

shared_ptr< Material > plask::ArrangeContainer< dim >::getMaterial | ( | const DVec & | p | ) | const
| override virtual

Return material in a given point inside the geometry object.

Parameters

  p | point

Returns
  material in given point, or `nullptr` if this GeometryObject not contains point p

Implements plask::GeometryObjectD< dim >.

Definition at line 140 of file lattice.cpp.

## ◆ getObjectsToVec()

template<int dim>

void plask::ArrangeContainer< dim >::getObjectsToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< shared_ptr< const GeometryObject > > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| override virtual

Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.

Parameters

  predicate | predicate required to match
  dest | destination vector
  path | (optional) path hints which limits search space

Implements plask::GeometryObject.

Definition at line 100 of file lattice.cpp.

## ◆ getPathsAt()

template<int dim>

GeometryObject::Subtree plask::ArrangeContainer< dim >::getPathsAt | ( | const DVec & | point,
|  | bool | all = `false`
| ) |  | const
| override virtual

Find all paths to objects which lies at given `point`.

Parameters

  point | a point in local coordinates
  all | if true then return all paths if branches overlap the point

Returns
  all paths, last one is on top and overlies the rest

Implements plask::GeometryObjectD< dim >.

Definition at line 167 of file lattice.cpp.

## ◆ getPositionsToVec()

template<int dim>

void plask::ArrangeContainer< dim >::getPositionsToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< DVec > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| override virtual

Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally marked by path.

Some objects can have all vector of NaNs as translations. This mean that translation is not well defined (some space changer on path).

Parameters

  predicate | predicate required to match
  dest | place to add result, positions will be added in the same order which is generated by GeometryObject::getObjectsToVec
  path | (optional) path hints which limits search space

Implements plask::GeometryObjectD< dim >.

Definition at line 116 of file lattice.cpp.

## ◆ getRealBoundingBox()

template<int dim>

ArrangeContainer< dim >::Box plask::ArrangeContainer< dim >::getRealBoundingBox | ( |  | ) | const
| override virtual

Calculate minimal rectangle which contains all points of real geometry object.

This box can be different from getBoundingBox() only for objects which have virtual children, like multple-stack. Returned box is always included in (in most cases: equal to) box returned by getBoundingBox().

Default implementation returns result of getBoundingBox() call.

Returns
  calculated rectangle

Reimplemented from plask::GeometryObjectD< dim >.

Definition at line 78 of file lattice.cpp.

## ◆ getRealChildNo()

template<int dim>

shared_ptr< GeometryObject > plask::ArrangeContainer< dim >::getRealChildNo | ( | std::size_t | child_no | ) | const
| override virtual

Get real (physically stored) child with given index.

By default call getChildNo(child_no), but objects of some types (like multi-stack) redefine this.

Parameters

  child_no | index of real child to get

Returns
  child with index `child_no`

Reimplemented from plask::GeometryObject.

Definition at line 162 of file lattice.cpp.

## ◆ getRealChildrenCount()

template<int dim>

std::size_t plask::ArrangeContainer< dim >::getRealChildrenCount | ( |  | ) | const
| override virtual

Get number of real (physically stored) children in geometry graph.

By default call getChildrenCount(), but objects of some types (like multi-stack) redefine this.

Returns
  number of real children

Reimplemented from plask::GeometryObject.

Definition at line 158 of file lattice.cpp.

## ◆ getRepeatCount()

template<int dim>

unsigned plask::ArrangeContainer< dim >::getRepeatCount | ( |  | ) | const
| inline

Definition at line 115 of file lattice.hpp.

## ◆ getTranslation()

template<int dim>

DVec plask::ArrangeContainer< dim >::getTranslation | ( |  | ) | const
| inline

Definition at line 123 of file lattice.hpp.

## ◆ getTypeName()

template<int dim>

std::string plask::ArrangeContainer< dim >::getTypeName | ( |  | ) | const
| inline override virtual

Get name of object type (like: "block2d", "shelf", "stack3d", etc.).

This name is used as tag name when object is serialized to XML.

Returns
  name of object type

Implements plask::GeometryObject.

Definition at line 79 of file lattice.hpp.

## ◆ setRepeatCount()

template<int dim>

void plask::ArrangeContainer< dim >::setRepeatCount | ( | unsigned | new_repeat_count | ) |
| inline

Definition at line 117 of file lattice.hpp.

## ◆ setTranslation()

template<int dim>

void plask::ArrangeContainer< dim >::setTranslation | ( | DVec | new_translation | ) |
| inline

Definition at line 125 of file lattice.hpp.

## ◆ shallowCopy()

template<int dim>

shared_ptr< GeometryObject > plask::ArrangeContainer< dim >::shallowCopy | ( |  | ) | const
| override virtual

Get shallow copy of this.

In the shallow copy all children are the same

Returns
  shallow copy of this

Implements plask::GeometryObject.

Definition at line 190 of file lattice.cpp.

## ◆ warmOverlaping()

template<int dim>

void plask::ArrangeContainer< dim >::warmOverlaping | ( |  | ) | const
| protected

Warm if warn_overlapping is set and item bboxes overlap.

Definition at line 51 of file lattice.cpp.

## ◆ writeXMLAttr() [1/5]

void plask::ArrangeContainer< 2 >::writeXMLAttr | ( | XMLWriter::Element & | dest_xml_object,
|  | const AxisNames & | axes
| ) |  | const
| virtual

Append XML attributes of this to `dest_xml_object`.

By default do nothing.

Parameters

  dest_xml_object | XML tag where attributes should be append
  axes | chosen name of axes

Reimplemented from plask::GeometryObject.

Definition at line 230 of file lattice.cpp.

## ◆ writeXMLAttr() [2/5]

void plask::ArrangeContainer< 3 >::writeXMLAttr | ( | XMLWriter::Element & | dest_xml_object,
|  | const AxisNames & | axes
| ) |  | const
| virtual

Append XML attributes of this to `dest_xml_object`.

By default do nothing.

Parameters

  dest_xml_object | XML tag where attributes should be append
  axes | chosen name of axes

Reimplemented from plask::GeometryObject.

Definition at line 238 of file lattice.cpp.

## ◆ writeXMLAttr() [3/5]

void plask::ArrangeContainer< 2 >::writeXMLAttr | ( | XMLWriter::Element & | dest_xml_object,
|  | const AxisNames & | axes
| ) |  | const
| virtual

Append XML attributes of this to `dest_xml_object`.

By default do nothing.

Parameters

  dest_xml_object | XML tag where attributes should be append
  axes | chosen name of axes

Reimplemented from plask::GeometryObject.

## ◆ writeXMLAttr() [4/5]

void plask::ArrangeContainer< 3 >::writeXMLAttr | ( | XMLWriter::Element & | dest_xml_object,
|  | const AxisNames & | axes
| ) |  | const
| virtual

Append XML attributes of this to `dest_xml_object`.

By default do nothing.

Parameters

  dest_xml_object | XML tag where attributes should be append
  axes | chosen name of axes

Reimplemented from plask::GeometryObject.

## ◆ writeXMLAttr() [5/5]

template<int dim>

void plask::ArrangeContainer< dim >::writeXMLAttr | ( | XMLWriter::Element & | dest_xml_object,
|  | const AxisNames & | axes
| ) |  | const
| override virtual

Append XML attributes of this to `dest_xml_object`.

By default do nothing.

Parameters

  dest_xml_object | XML tag where attributes should be append
  axes | chosen name of axes

Reimplemented from plask::GeometryObject.

## Member Data Documentation

## ◆ _child

template<int dim>

shared_ptr<ChildType> plask::GeometryObjectTransform< dim, Child_Type >::_child
| protected

Definition at line 218 of file transform.hpp.

## ◆ NAME

template<int dim>

const char * plask::ArrangeContainer< dim >::NAME = dim == 2 ? PLASK_ARRANGE2D_NAME : PLASK_ARRANGE3D_NAME
| static

Definition at line 77 of file lattice.hpp.

## ◆ repeat_count

template<int dim>

unsigned plask::ArrangeContainer< dim >::repeat_count
| protected

Number of repetitions.

Definition at line 50 of file lattice.hpp.

## ◆ translation

template<int dim>

DVec plask::ArrangeContainer< dim >::translation
| protected

Translation vector for each repetition.

Definition at line 47 of file lattice.hpp.

## ◆ warn_overlapping

template<int dim>

bool plask::ArrangeContainer< dim >::warn_overlapping

Should the user be warned about overlapping bounding boxes?

Definition at line 60 of file lattice.hpp.

The documentation for this struct was generated from the following files:

- plask/geometry/lattice.hpp
- plask/geometry/lattice.cpp