#include <hexsubdiv.hh>
Public Member Functions | |
virtual void | createChildren (Hexahedron &q) const |
virtual void | removeChildren (Hexahedron &q) const |
Static Public Member Functions | |
static const HexSubdiv4z * | instance () |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. | |
void | subFace0011 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace1100 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace0110 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace1001 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B) const |
void | subFace0123 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const |
void | subFace1230 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const |
void | subFace2301 (Quad &q, Z2 rho, Z4 tau, Quad *&A, Quad *&B, Quad *&C, Quad *&D) const |
bool | faceSubdiv4 (Quad &q) const |
Quad * | findFace (const Vertex *const v, Quad *const q[4], const unsigned int tau, const unsigned int rho, const unsigned int vtxIdx) const |
void | subdivFace0 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace1 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace2 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace3 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace4 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
void | subdivFace5 (Hexahedron &h, Quad *&A, Quad *&B, Quad *&C, Quad *&D, bool normal) const |
Subdivision strategy for hexahedrons which generates 4 children along the z direction.
The children are generated by subdividing the respective faces into 2 or 4 quadrilaterals and introducing one new edge and 4 new faces.
Definition at line 299 of file hexsubdiv.hh.
|
virtual |
If no children of q exist, they are created.
Implements concepts::HexSubdivision.
Takes a face and tries to subdivide it into 4 (by setting the strategy to QuadSubdiv4
). Firstly, a normal subdivision in one shot into 4 children is tried. If this fails (by catching a StrategyChange
exception), then a previous subdivision into 2 children was executed on this face. The orthogonal subdivision into 2 children is then reserved (by setting the strategy accordingly) on the two children of the face. This can be called a subdivision into 4 children in two shots.
q | Face to be subdivided into 4 |
StrategyChange | if the subdivision in two shots fails too |
|
protectedinherited |
Looks for the quad in q
which contains the vertex v
. This is done by a loop over the four entries of q
and checking the indicated vertex (given by the index location vtxIdx
).
v | Vertex to look for |
q | List of quads to search through |
tau | Orientation flags of the quads |
rho | Rotation flags of the quads |
vtxIdx | Index location of the vertex in the quads counted from vertex 0 in the quad in rho = 0 direction |
|
protectedvirtual |
Returns information in an output stream.
Reimplemented from concepts::OutputOperator.
|
virtual |
If there are children, they are removed. The additional faces, edges and vertices are removed as well.
Implements concepts::HexSubdivision.
|
protectedinherited |
Subdivides a face of a hexehedron h
into 4 children. normal
is taken into account: true
means that the face is to be subdivided in one shot, false
means two shots.
h | Hexahedron of which the face has to be subdivided |
A | Result |
B | Result |
C | Result |
D | Result |
normal | one or two shots |
|
protectedinherited |
Gets the two children of q
and sorts them. The sorting rule is given in the name and parametrized by the orientation flags rho
and tau
.
The code 0011 means the following:
rho \ tau | 0 | 1 | 2 | 3 |
0 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
The indices 0 and 1 denote the index in the call to Quad::child which has to be used to get the correct face back.
A
and B
|
protectedinherited |
Gets the four children of q
and sorts them. The sorting rule is given in the name and and parametrized by the orientation flags rho
and tau
.
The code 0123 means the following:
rho \ tau | 0 | 1 | 2 | 3 |
0 | 0 | 1 | 2 | 3 |
1 | 1 | 2 | 3 | 0 |
The indices 0, 1, 2 and 3 denote the index in the call to Quad::child which has to be used to get the correct face back.
A
, B
, C
and D