PLaSK library
|
Represent 3D geometry object which are extend of 2D object (child) in lon direction. More...
#include <plask/geometry/transform_space_cartesian.hpp>
Public Types | |
typedef BaseClass::ChildType | ChildType |
Public Types inherited from plask::GeometryObjectTransformSpace< 3, 2 > | |
typedef ChildType::Box | ChildBox |
typedef ChildType::DVec | ChildVec |
typedef GeometryObjectTransform< this_dim, GeometryObjectD< child_dim > >::DVec | DVec |
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 | |
Extrusion (shared_ptr< ChildType > child, double length) | |
Extrusion (double length=0.0) | |
std::string | getTypeName () const override |
Get name of object type (like: "block2d", "shelf", "stack3d", etc.). | |
double | getLength () const |
void | setLength (double new_length) |
Set length and inform observers. | |
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. | |
Box | fromChildCoords (const typename ChildType::Box &child_bbox) const override |
Convert bounding box from child's to this's coordinates. | |
shared_ptr< GeometryObject > | shallowCopy () const override |
Get shallow copy of this. | |
GeometryObject::Subtree | getPathsAt (const DVec &point, bool all=false) const override |
Find all paths to objects which lies at given point . | |
void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const override |
Append XML attributes of this to dest_xml_object . | |
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. | |
Public Member Functions inherited from plask::GeometryObjectTransformSpace< 3, 2 > | |
GeometryObjectTransformSpace (shared_ptr< GeometryObjectD< child_dim > > child=shared_ptr< GeometryObjectD< child_dim > >()) | |
GeometryObject::Type | getType () const override |
Public Member Functions inherited from plask::GeometryObjectTransform< dim, Child_Type > | |
GeometryObjectTransform (shared_ptr< ChildType > child=nullptr) | |
GeometryObjectTransform (ChildType &child) | |
virtual | ~GeometryObjectTransform () |
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 |
virtual Box | getRealBoundingBox () const |
Calculate minimal rectangle which contains all points of real geometry object. | |
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. | |
virtual std::size_t | getRealChildrenCount () const |
Get number of real (physically stored) children in geometry graph. | |
virtual shared_ptr< GeometryObject > | getRealChildNo (std::size_t child_no) const |
Get real (physically stored) child with given index. | |
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. | |
Static Public Attributes | |
static const char * | NAME = PLASK_EXTRUSION_NAME |
Static Public Attributes inherited from plask::GeometryObjectD< dim > | |
static const int | DIM = dim |
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. | |
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. | |
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) |
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. | |
Protected Attributes inherited from plask::GeometryObjectTransform< dim, Child_Type > | |
shared_ptr< ChildType > | _child |
Represent 3D geometry object which are extend of 2D object (child) in lon direction.
Definition at line 25 of file transform_space_cartesian.hpp.
Definition at line 33 of file transform_space_cartesian.hpp.
Definition at line 38 of file transform_space_cartesian.hpp.
|
inlineexplicit |
Definition at line 40 of file transform_space_cartesian.hpp.
Check if this geometry object contains point.
point | point in local coordinates |
Implements plask::GeometryObjectD< dim >.
Definition at line 34 of file transform_space_cartesian.cpp.
|
overridevirtual |
Convert bounding box from child's to this's coordinates.
child_bbox | bounding box of child |
child_bbox
converted to this's coordinates Implements plask::GeometryObjectTransform< dim, Child_Type >.
Definition at line 46 of file transform_space_cartesian.cpp.
|
inline |
Definition at line 46 of file transform_space_cartesian.hpp.
Return material in a given point inside the geometry object.
p | point |
nullptr
if this GeometryObject not contains point p Implements plask::GeometryObjectD< dim >.
Definition at line 42 of file transform_space_cartesian.cpp.
|
overridevirtual |
Find all paths to objects which lies at given point
.
point | a point in local coordinates |
all | if true then return all paths if branches overlap the point |
Implements plask::GeometryObjectD< dim >.
Definition at line 58 of file transform_space_cartesian.cpp.
|
overridevirtual |
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).
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 70 of file transform_space_cartesian.cpp.
|
overridevirtual |
Get name of object type (like: "block2d", "shelf", "stack3d", etc.).
This name is used as tag name when object is serialized to XML.
Implements plask::GeometryObject.
Definition at line 26 of file transform_space_cartesian.cpp.
Set length and inform observers.
new_length | new length |
Definition at line 28 of file transform_space_cartesian.cpp.
|
overridevirtual |
Get shallow copy of this.
In the shallow copy all children are the same
Implements plask::GeometryObject.
Definition at line 54 of file transform_space_cartesian.cpp.
|
overridevirtual |
Append XML attributes of this to dest_xml_object
.
By default do nothing.
dest_xml_object | XML tag where attributes should be append |
axes | chosen name of axes |
Reimplemented from plask::GeometryObject.
Definition at line 65 of file transform_space_cartesian.cpp.
|
static |
Definition at line 42 of file transform_space_cartesian.hpp.