G+Smo
24.08.0
Geometry + Simulation Modules
|
Class for representing a solid made up of vertices, edges, faces, and volumes.
Inherits gsSolidElement< T >.
Public Types | |
typedef std::vector < gsSolidHalfFaceHandle * > ::iterator | face_iterator |
Iterators. | |
Public Member Functions | |
gsSolidHalfFaceHandle | addFace (std::vector< gsSolidHeVertexHandle > V) |
gsSolidHalfFaceHandle | addFace (std::vector< std::vector< gsSolidHeVertexHandle > > loopV, gsTrimSurface< T > *tsurf) |
Add a half face to the solid. More... | |
gsSolidHalfFaceHandle | addFace_4Vertices (gsSolidHeVertexHandle v0, gsSolidHeVertexHandle v1, gsSolidHeVertexHandle v2, gsSolidHeVertexHandle v3) |
add one face as a trimmed surface, the order of the vertices in V must be either CCW or CW when viewing from infinity for all faces | |
gsSolidHalfFaceHandle | addFace_PlanarPolygon (std::vector< gsSolidHeVertexHandle > V) |
Add a planar face, specified by a list of vertices that should all be in the same plane. | |
gsSolidHalfFace< T > * | addFaceWithMate (const std::vector< gsSolidHeVertexHandle > &Verts, gsTrimSurface< T > *surf) |
Make a face that can be used as the mate of the given face, add both faces and split off a new volume. | |
void | addHeVertex (scalar_t const &x, scalar_t const &y, scalar_t const &z=0) |
add coords to gsHeVertex, not yet pointers to HEs | |
void | addVolume (gsVolumeHandle vol) |
add a volume using its handle | |
void | addVolume (std::vector< gsSolidHalfFaceHandle > hfaces) |
add a volume using handles of its half faces | |
void | checkStructure (bool checkVerts=false) const |
sanity checks on the graph structure of the solid | |
std::vector < gsSolidHalfEdgeHandle > | detectNonConvexEdges (std::vector< int > const &ncEdgeV1, std::vector< int > const &ncEdgeV2) |
Define (TODO: detect automatically) nonconvex edges. | |
void | handleImpedingEdges (gsSolidHalfEdgeHandle he) |
If there are impeding edges that make the solid inseparatable along a given HE he, this routine will create a new vertex on each impeding edges. | |
std::vector < gsSolidHalfEdgeHandle > | impedingEdges (gsSolidHalfEdgeHandle he) const |
void | insertNewVertex (gsSolidHalfEdgeHandle he) |
Insert a new vertex to an edge of the volume. More... | |
gsVolumeBlock< T > * | newVolume (gsSolidHalfFaceHandle startingFace) |
Starting with a specified face, chase round all the faces connected to it and move them to a new volume. | |
gsMultiPatch< T > | plotEdgeGraph () |
plot edge graph | |
virtual std::ostream & | print (std::ostream &os) const |
Prints the object as a string. | |
void | setHeMate () |
Assigning mates for each HE. | |
gsSolidHalfFaceHandle | splitFace (gsSolidHalfFaceHandle f, gsSolidHeVertexHandle startVertex, gsSolidHeVertexHandle endVertex, gsBSpline< T > *domainSpline) |
gsSolid< T >::gsSolidHalfFaceHandle addFace | ( | std::vector< gsSolidHeVertexHandle > | V | ) |
add one face as a trimmed surface, the order of the vertices in V must be either CCW or CW when viewing from infinity for all faces
gsSolid< T >::gsSolidHalfFaceHandle addFace | ( | std::vector< std::vector< gsSolidHeVertexHandle > > | loopV, |
gsTrimSurface< T > * | tsurf | ||
) |
Add a half face to the solid.
loopV | a vector of vectors of vertices of one loop, the first vector is the outer loop |
tsurf | a (pointer to) trimmed surface |
std::vector< typename gsSolid< T >::gsSolidHalfEdgeHandle > impedingEdges | ( | gsSolidHalfEdgeHandle | he | ) | const |
Check if the solid is separatable along a given edge he by collecting all "impeding edges" which connect the two faces incident to he.
void insertNewVertex | ( | gsSolidHalfEdgeHandle | he | ) |
Insert a new vertex to an edge of the volume.
he | the half-edge into which to insert the vertex |
gsSolid< T >::gsSolidHalfFaceHandle splitFace | ( | gsSolidHalfFaceHandle | f, |
gsSolidHeVertexHandle | startVertex, | ||
gsSolidHeVertexHandle | endVertex, | ||
gsBSpline< T > * | domainSpline | ||
) |
Split a face f along a given spline. Returns the new face created as a result. The new face will have the edges from startVertex to endVertex and the reverse of domainSpline. The original face f will retain the edges from endVertex to startVertex and gain domainSpline (forwards).