Inheritance diagram for xlifepp::Polyhedron:
digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"7" [label="xlifepp::Cube" tooltip="xlifepp::Cube"]
"6" [label="xlifepp::Cuboid" tooltip="xlifepp::Cuboid"]
"3" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"]
"4" [label="xlifepp::Hexahedron" tooltip="xlifepp::Hexahedron"]
"5" [label="xlifepp::Parallelepiped" tooltip="xlifepp::Parallelepiped"]
"1" [label="xlifepp::Polyhedron" tooltip="xlifepp::Polyhedron" fillcolor="#BFBFBF"]
"8" [label="xlifepp::Tetrahedron" tooltip="xlifepp::Tetrahedron"]
"2" [label="xlifepp::Volume" tooltip="xlifepp::Volume"]
"7" -> "6" [dir=forward tooltip="public-inheritance"]
"6" -> "5" [dir=forward tooltip="public-inheritance"]
"4" -> "1" [dir=forward tooltip="public-inheritance"]
"5" -> "4" [dir=forward tooltip="public-inheritance"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"8" -> "1" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
}
Collaboration diagram for xlifepp::Polyhedron:
digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"22" [label="xlifepp::Collection< string_t >" tooltip="xlifepp::Collection< string_t >"]
"15" [label="xlifepp::Matrix< real_t >" tooltip="xlifepp::Matrix< real_t >"]
"19" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"]
"30" [label="xlifepp::Vector< xlifepp::Vector< real_t > >" tooltip="xlifepp::Vector< xlifepp::Vector< real_t > >"]
"39" [label="std::list< std::pair< number_t, real_t > >" tooltip="std::list< std::pair< number_t, real_t > >"]
"11" [label="std::map< number_t, std::vector< number_t > >" tooltip="std::map< number_t, std::vector< number_t > >"]
"9" [label="std::map< number_t, xlifepp::Geometry * >" tooltip="std::map< number_t, xlifepp::Geometry * >"]
"38" [label="std::map< string_t, number_t >" tooltip="std::map< string_t, number_t >"]
"40" [label="std::list< T >" tooltip="std::list< T >"]
"10" [label="std::map< K, T >" tooltip="std::map< K, T >"]
"6" [label="std::vector< T >" tooltip="std::vector< T >"]
"25" [label="std::vector< T >" tooltip="std::vector< T >"]
"18" [label="std::vector< K >" tooltip="std::vector< K >"]
"5" [label="std::vector< RealPair >" tooltip="std::vector< RealPair >"]
"21" [label="std::vector< const xlifepp::Transformation * >" tooltip="std::vector< const xlifepp::Transformation * >"]
"26" [label="std::vector< number_t >" tooltip="std::vector< number_t >"]
"16" [label="std::vector< real_t >" tooltip="std::vector< real_t >"]
"35" [label="std::vector< std::vector< GeoNumPair > >" tooltip="std::vector< std::vector< GeoNumPair > >"]
"12" [label="std::vector< std::vector< int_t > >" tooltip="std::vector< std::vector< int_t > >"]
"23" [label="std::vector< string_t >" tooltip="std::vector< string_t >"]
"34" [label="std::vector< xlifepp::GeomDomain * >" tooltip="std::vector< xlifepp::GeomDomain * >"]
"33" [label="std::vector< xlifepp::GeomElement * >" tooltip="std::vector< xlifepp::GeomElement * >"]
"37" [label="std::vector< xlifepp::Parameter * >" tooltip="std::vector< xlifepp::Parameter * >"]
"8" [label="std::vector< xlifepp::Point >" tooltip="std::vector< xlifepp::Point >"]
"42" [label="std::vector< xlifepp::Polygon * >" tooltip="std::vector< xlifepp::Polygon * >"]
"27" [label="std::vector< xlifepp::Transformation * >" tooltip="std::vector< xlifepp::Transformation * >"]
"31" [label="std::vector< xlifepp::Vector< real_t > >" tooltip="std::vector< xlifepp::Vector< real_t > >"]
"4" [label="xlifepp::BoundingBox" tooltip="xlifepp::BoundingBox"]
"24" [label="xlifepp::Collection< T >" tooltip="xlifepp::Collection< T >"]
"13" [label="xlifepp::ExtrusionData" tooltip="xlifepp::ExtrusionData"]
"41" [label="xlifepp::GeoNode" tooltip="xlifepp::GeoNode"]
"3" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"]
"17" [label="xlifepp::Matrix< K >" tooltip="xlifepp::Matrix< K >"]
"32" [label="xlifepp::Mesh" tooltip="xlifepp::Mesh"]
"7" [label="xlifepp::MinimalBox" tooltip="xlifepp::MinimalBox"]
"29" [label="xlifepp::Parameterization" tooltip="xlifepp::Parameterization"]
"36" [label="xlifepp::Parameters" tooltip="xlifepp::Parameters"]
"28" [label="xlifepp::Point" tooltip="xlifepp::Point"]
"1" [label="xlifepp::Polyhedron" tooltip="xlifepp::Polyhedron" fillcolor="#BFBFBF"]
"14" [label="xlifepp::Transformation" tooltip="xlifepp::Transformation"]
"20" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"]
"2" [label="xlifepp::Volume" tooltip="xlifepp::Volume"]
"22" -> "23" [dir=forward tooltip="public-inheritance"]
"22" -> "24" [dir=forward tooltip="template-instance"]
"15" -> "16" [dir=forward tooltip="public-inheritance"]
"15" -> "17" [dir=forward tooltip="template-instance"]
"19" -> "16" [dir=forward tooltip="public-inheritance"]
"19" -> "20" [dir=forward tooltip="template-instance"]
"30" -> "31" [dir=forward tooltip="public-inheritance"]
"30" -> "20" [dir=forward tooltip="template-instance"]
"39" -> "40" [dir=forward tooltip="template-instance"]
"11" -> "10" [dir=forward tooltip="template-instance"]
"9" -> "10" [dir=forward tooltip="template-instance"]
"38" -> "10" [dir=forward tooltip="template-instance"]
"18" -> "6" [dir=forward tooltip="template-instance"]
"5" -> "6" [dir=forward tooltip="template-instance"]
"21" -> "6" [dir=forward tooltip="template-instance"]
"26" -> "6" [dir=forward tooltip="template-instance"]
"16" -> "6" [dir=forward tooltip="template-instance"]
"35" -> "6" [dir=forward tooltip="template-instance"]
"12" -> "6" [dir=forward tooltip="template-instance"]
"23" -> "6" [dir=forward tooltip="template-instance"]
"34" -> "6" [dir=forward tooltip="template-instance"]
"33" -> "6" [dir=forward tooltip="template-instance"]
"37" -> "6" [dir=forward tooltip="template-instance"]
"8" -> "6" [dir=forward tooltip="template-instance"]
"42" -> "6" [dir=forward tooltip="template-instance"]
"27" -> "6" [dir=forward tooltip="template-instance"]
"31" -> "6" [dir=forward tooltip="template-instance"]
"4" -> "5" [dir=forward tooltip="usage"]
"24" -> "25" [dir=forward tooltip="public-inheritance"]
"13" -> "14" [dir=forward tooltip="usage"]
"13" -> "22" [dir=forward tooltip="usage"]
"13" -> "26" [dir=forward tooltip="usage"]
"13" -> "16" [dir=forward tooltip="usage"]
"13" -> "19" [dir=forward tooltip="usage"]
"13" -> "27" [dir=forward tooltip="usage"]
"13" -> "28" [dir=forward tooltip="usage"]
"41" -> "41" [dir=forward tooltip="usage"]
"41" -> "3" [dir=forward tooltip="usage"]
"3" -> "4" [dir=forward tooltip="usage"]
"3" -> "7" [dir=forward tooltip="usage"]
"3" -> "9" [dir=forward tooltip="usage"]
"3" -> "11" [dir=forward tooltip="usage"]
"3" -> "12" [dir=forward tooltip="usage"]
"3" -> "13" [dir=forward tooltip="usage"]
"3" -> "29" [dir=forward tooltip="usage"]
"3" -> "3" [dir=forward tooltip="usage"]
"3" -> "41" [dir=forward tooltip="usage"]
"17" -> "18" [dir=forward tooltip="public-inheritance"]
"32" -> "3" [dir=forward tooltip="usage"]
"32" -> "8" [dir=forward tooltip="usage"]
"32" -> "33" [dir=forward tooltip="usage"]
"32" -> "34" [dir=forward tooltip="usage"]
"32" -> "26" [dir=forward tooltip="usage"]
"32" -> "35" [dir=forward tooltip="usage"]
"32" -> "32" [dir=forward tooltip="usage"]
"7" -> "8" [dir=forward tooltip="usage"]
"29" -> "3" [dir=forward tooltip="usage"]
"29" -> "19" [dir=forward tooltip="usage"]
"29" -> "30" [dir=forward tooltip="usage"]
"29" -> "32" [dir=forward tooltip="usage"]
"29" -> "36" [dir=forward tooltip="usage"]
"29" -> "39" [dir=forward tooltip="usage"]
"36" -> "37" [dir=forward tooltip="usage"]
"36" -> "38" [dir=forward tooltip="usage"]
"28" -> "16" [dir=forward tooltip="public-inheritance"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"1" -> "42" [dir=forward tooltip="usage"]
"14" -> "15" [dir=forward tooltip="usage"]
"14" -> "19" [dir=forward tooltip="usage"]
"14" -> "21" [dir=forward tooltip="usage"]
"20" -> "18" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
"2" -> "8" [dir=forward tooltip="usage"]
"2" -> "26" [dir=forward tooltip="usage"]
"2" -> "16" [dir=forward tooltip="usage"]
}
definition of a polyhedral geometry in R^3 Generally, a polyhedron is a list of polygonal faces.
But data is storages differently to avoid pointer manipulation So, we decide to store:
the list of vertices -> Vector<Point> p_
the definition of faces as a list of points -> Vector <Vector<number_t> > faces_ it is so that p_[faces_[i][j]] is the j-st vertex of the i-st face of the polyhedron
the number of nodes on each edge -> Vector <Vector<number_t> > n_ it is so that n_[i][j] is the number of nodes on j-st edge [ p_[faces_[i][j]] p_[faces_[i][j+1]] ] of the i-st face of the polyhedron
Polyhedron constructors are based on a key-value system. Here are the available keys:
_faces: the geometrical faces defining the Polyhedron
_nnodes: to define the number of nodes on each edge of the Polyhedron
_hsteps: to define the local mesh steps on the vertices of the Polyhedron
_domain_name: to define the domain name
_side_names: to define the side names
_varnames: to define the variable names for print purpose
Subclassed by xlifepp::Hexahedron , xlifepp::Tetrahedron
Public Functions
Polyhedron ( )
default constructor
default polyhedron is tetrahedron (0,0,0) (1,0,0) (0,1,0) (0,0,1)
Polyhedron ( const Polyhedron & ph )
copy constructor
Polyhedron ( Parameter p1 )
constructor with 1 Parameter
Polyhedron ( Parameter p1 , Parameter p2 )
constructor with 2 Parameter
inline virtual ~Polyhedron ( )
destructor
virtual string_t asString ( ) const
format as string
virtual std :: vector < const Point * > boundNodes ( ) const
returns list of points on boundary (const)
virtual Geometry & buildBoundary ( ) const
create boundary geometry
create boundary geometry of polyhedron as a composite (union of faces)
inline virtual Geometry * clone ( ) const
virtual copy constructor
virtual void collect ( const string_t & n , std :: list < Geometry * > & ) const
collect in a list all canonical geometry’s with name n
inline virtual void computeMB ( )
computes the minimal box
virtual std :: vector < std :: pair < ShapeType , std :: vector < const Point * > > > curves ( ) const
returns list of edges
inline const std :: vector < Polygon * > & faces ( ) const
accessor to faces
inline virtual Polyhedron & homothetize ( const Point & c = Point ( 0. , 0. , 0. ) , real_t factor = 1. )
apply a homothety on a Polyhedron
inline virtual Polyhedron & homothetize ( real_t factor )
apply a homothety on a Polyhedron
inline number_t nbFaces ( ) const
accessor to number of faces
inline virtual number_t nbSides ( ) const
returns the number of sides
virtual std :: vector < Point * > nodes ( )
returns list of nodes (non const)
virtual std :: vector < const Point * > nodes ( ) const
returns list of nodes (const)
inline number_t nOnEdge ( number_t i , number_t j ) const
accessor to number of nodes on edge i
inline virtual Polyhedron & pointReflect ( const Point & c = Point ( 0. , 0. , 0. ) )
apply a point reflection on a Polyhedron
inline virtual Polyhedron * polyhedron ( )
access to child Polyhedron object
inline virtual const Polyhedron * polyhedron ( ) const
access to child Polyhedron object (const)
inline virtual Polyhedron & reflect2d ( const Point & c , real_t dx , real_t dy = 0. )
apply a reflection2d on a Polyhedron
inline virtual Polyhedron & reflect2d ( const Point & c = Point ( 0. , 0. ) , std :: vector < real_t > d = std :: vector < real_t > ( 2 , 0. ) )
apply a reflection2d on a Polyhedron
inline virtual Polyhedron & reflect3d ( const Point & c , real_t nx , real_t ny , real_t nz = 0. )
apply a reflection3d on a Polyhedron
inline virtual Polyhedron & reflect3d ( const Point & c = Point ( 0. , 0. , 0. ) , std :: vector < real_t > n = std :: vector < real_t > ( 3 , 0. ) )
apply a reflection3d on a Polyhedron
inline virtual Polyhedron & rotate2d ( const Point & c = Point ( 0. , 0. ) , real_t angle = 0. )
apply a rotation on a Polyhedron
inline virtual Polyhedron & rotate3d ( const Point & c , real_t dx , real_t dy , real_t angle )
apply a rotation on a Polyhedron
inline virtual Polyhedron & rotate3d ( const Point & c , real_t dx , real_t dy , real_t dz , real_t angle )
apply a rotation on a Polyhedron
inline virtual Polyhedron & rotate3d ( const Point & c = Point ( 0. , 0. , 0. ) , std :: vector < real_t > d = std :: vector < real_t > ( 3 , 0. ) , real_t angle = 0. )
apply a rotation on a Polyhedron
inline virtual Polyhedron & rotate3d ( real_t dx , real_t dy , real_t angle )
apply a rotation on a Polyhedron
inline virtual Polyhedron & rotate3d ( real_t dx , real_t dy , real_t dz , real_t angle )
apply a rotation on a Polyhedron
inline virtual void setFaces ( )
set the faces vector
virtual std :: vector < std :: pair < ShapeType , std :: vector < const Point * > > > surfs ( ) const
returns list of faces
virtual Polyhedron & transform ( const Transformation & t )
apply a geometrical transformation on a Polyhedron
inline virtual Polyhedron & translate ( real_t ux , real_t uy = 0. , real_t uz = 0. )
apply a translation on a Polyhedron (3 reals version)
inline virtual Polyhedron & translate ( std :: vector < real_t > u = std :: vector < real_t > ( 3 , 0. ) )
apply a translation on a Polyhedron (vector version)
void updateSideNames ( )
update side names from face domain names (do not use for child of Polyhedron )
inline virtual std :: vector < const Point * > wholeNodes ( ) const
< returns list of every point (const)
inline virtual bool withNnodes ( ) const
check if Polyhedron is defined only with _nnodes or with _hsteps option