#include <hexsubdiv.hh>
Public Member Functions | |
| virtual void | createChildren (Hexahedron &q) const |
| virtual void | removeChildren (Hexahedron &q) const |
Static Public Member Functions | |
| static const HexSubdiv4y * | 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 y 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 277 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