cgma
|
#include <CubitQuadFacetData.hpp>
Public Member Functions | |
CubitQuadFacetData (CubitFacet *tri_facets[2], CubitPoint *points[4]) | |
CubitQuadFacetData (CubitPoint *points[4]) | |
CubitQuadFacetData (CubitPoint *point0, CubitPoint *point1, CubitPoint *point2, CubitPoint *point3) | |
CubitQuadFacetData (CubitFacetEdge *e0, CubitFacetEdge *e1, CubitFacetEdge *e2, CubitFacetEdge *e3) | |
~CubitQuadFacetData () | |
int | tri_to_quad_index (int tri_index, int pt_index) |
CubitFacet * | get_tri_facet (int index) |
CubitFacet * | get_tri_facet_at_point (CubitPoint *point_ptr) |
void | remove_tri_facets () |
void | points (CubitPoint *points[4]) |
void | points (DLIList< CubitPoint * > &point_list) |
CubitPoint * | point (int index) |
CubitFacetEdge * | edge (int index) |
Private Attributes | |
CubitFacet * | myTriangleFacets [2] |
int | triToQuadIndex [2][3] |
Definition at line 9 of file CubitQuadFacetData.hpp.
CubitQuadFacetData::CubitQuadFacetData | ( | CubitFacet * | tri_facets[2], |
CubitPoint * | points[4] | ||
) |
Definition at line 23 of file CubitQuadFacetData.cpp.
{ myTriangleFacets[0] = tri_facets[0]; myTriangleFacets[1] = tri_facets[1]; CubitBoolean found = CUBIT_FALSE; CubitPoint *pt; int ii, jj, kk; for (jj=0; jj<2; jj++) { for (kk=0; kk<3; kk++) { pt = myTriangleFacets[jj]->point(kk); found = CUBIT_FALSE; for (ii=0; ii<4 && !found; ii++) { if (points[ii] == pt) { triToQuadIndex[jj][kk] = ii; found = CUBIT_TRUE; } } // If assertion occurs, the that points passed to the constructor do // not match the points on the triangle facets assert(found == CUBIT_TRUE); } } }
CubitQuadFacetData::CubitQuadFacetData | ( | CubitPoint * | points[4] | ) |
Definition at line 125 of file CubitQuadFacetData.cpp.
{ // The orientation of the triangles in the quad is arbitrary. // We may want to split based on some other criteria (ie. angles) myTriangleFacets[0] = new CubitFacetData( points[0], points[1], points[2] ); myTriangleFacets[1] = new CubitFacetData( points[2], points[3], points[0] ); triToQuadIndex[0][0] = 0; triToQuadIndex[0][1] = 1; triToQuadIndex[0][2] = 2; triToQuadIndex[1][0] = 2; triToQuadIndex[1][1] = 3; triToQuadIndex[1][2] = 0; }
CubitQuadFacetData::CubitQuadFacetData | ( | CubitPoint * | point0, |
CubitPoint * | point1, | ||
CubitPoint * | point2, | ||
CubitPoint * | point3 | ||
) |
Definition at line 65 of file CubitQuadFacetData.cpp.
{ // The orientation of the triangles in the quad is arbitrary. // We may want to split based on some other criteria (ie. angles) myTriangleFacets[0] = new CubitFacetData( point0, point1, point2 ); myTriangleFacets[1] = new CubitFacetData( point2, point3, point0 ); triToQuadIndex[0][0] = 0; triToQuadIndex[0][1] = 1; triToQuadIndex[0][2] = 2; triToQuadIndex[1][0] = 2; triToQuadIndex[1][1] = 3; triToQuadIndex[1][2] = 0; }
CubitQuadFacetData::CubitQuadFacetData | ( | CubitFacetEdge * | e0, |
CubitFacetEdge * | e1, | ||
CubitFacetEdge * | e2, | ||
CubitFacetEdge * | e3 | ||
) |
Definition at line 92 of file CubitQuadFacetData.cpp.
{ // create the diagonal edge CubitPoint *p0 = e3->shared_point(e0); CubitPoint *p2 = e1->shared_point(e2); assert(p0 != NULL && p2 != NULL); CubitFacetEdge *e4 = (CubitFacetEdge *) new CubitFacetEdgeData( p0, p2 ); // create the triangles myTriangleFacets[0] = new CubitFacetData( e1, e4, e0 ); myTriangleFacets[1] = new CubitFacetData( e3, e4, e2 ); triToQuadIndex[0][0] = 0; triToQuadIndex[0][1] = 1; triToQuadIndex[0][2] = 2; triToQuadIndex[1][0] = 2; triToQuadIndex[1][1] = 3; triToQuadIndex[1][2] = 0; }
Definition at line 149 of file CubitQuadFacetData.cpp.
{ if (myTriangleFacets[0] == NULL && myTriangleFacets[1] == NULL) return; assert(myTriangleFacets[0] && myTriangleFacets[1]); // determine the dialogonal edge CubitPoint *p0 = this->point(0); CubitPoint *p2 = this->point(2); CubitFacetEdge *dedge = NULL; if (p0 != NULL && p2 != NULL) { dedge = p0->shared_edge(p2); } // delete both triangles delete myTriangleFacets[0]; delete myTriangleFacets[1]; // delete the dialgonal edge if (dedge != NULL) { delete dedge; } }
CubitFacetEdge * CubitQuadFacetData::edge | ( | int | index | ) | [virtual] |
Implements CubitQuadFacet.
Definition at line 235 of file CubitQuadFacetData.cpp.
{ int ii, jj; CubitPoint *p0 = NULL; CubitPoint *p1 = NULL; int index1 = (index + 1) % 4; for (ii=0; ii<2; ii++) { for (jj=0; jj<3; jj++) { if (triToQuadIndex[ii][jj] == index) { p0 = myTriangleFacets[ii]->point(jj); } else if ( triToQuadIndex[ii][jj] == index1 ) { p1 = myTriangleFacets[ii]->point(jj); } } } assert(p0 != NULL && p1 != NULL); // index is probably out of range return p0->shared_edge( p1 ); }
CubitFacet* CubitQuadFacetData::get_tri_facet | ( | int | index | ) | [inline, virtual] |
Implements CubitQuadFacet.
Definition at line 30 of file CubitQuadFacetData.hpp.
{ return myTriangleFacets[ index ]; }
CubitFacet * CubitQuadFacetData::get_tri_facet_at_point | ( | CubitPoint * | point_ptr | ) | [virtual] |
Implements CubitQuadFacet.
Definition at line 267 of file CubitQuadFacetData.cpp.
{ int ii, jj; for (ii=0; ii<2; ii++) { for (jj=0; jj<3; jj++) { if (myTriangleFacets[ii]->point(jj) == point_ptr) { return myTriangleFacets[ii]; } } } assert(0); // point isn't on facet return NULL; }
CubitPoint * CubitQuadFacetData::point | ( | int | index | ) | [virtual] |
Implements CubitQuadFacet.
Definition at line 212 of file CubitQuadFacetData.cpp.
{ int ii, jj; for (ii=0; ii<2; ii++) { for (jj=0; jj<3; jj++) { if (triToQuadIndex[ii][jj] == index) { return myTriangleFacets[ii]->point(jj); } } } assert(0); // index is probably out of range return NULL; }
void CubitQuadFacetData::points | ( | CubitPoint * | points[4] | ) | [virtual] |
Implements CubitQuadFacet.
Definition at line 194 of file CubitQuadFacetData.cpp.
{ thepoints[triToQuadIndex[0][0]] = myTriangleFacets[0]->point(0); thepoints[triToQuadIndex[0][1]] = myTriangleFacets[0]->point(1); thepoints[triToQuadIndex[0][2]] = myTriangleFacets[0]->point(2); thepoints[triToQuadIndex[1][0]] = myTriangleFacets[1]->point(0); thepoints[triToQuadIndex[1][1]] = myTriangleFacets[1]->point(1); thepoints[triToQuadIndex[1][2]] = myTriangleFacets[1]->point(2); }
void CubitQuadFacetData::points | ( | DLIList< CubitPoint * > & | point_list | ) | [inline, virtual] |
Reimplemented from CubitQuadFacet.
Definition at line 42 of file CubitQuadFacetData.hpp.
{CubitQuadFacet::points(point_list);}
void CubitQuadFacetData::remove_tri_facets | ( | ) | [virtual] |
Implements CubitQuadFacet.
Definition at line 182 of file CubitQuadFacetData.cpp.
{ myTriangleFacets[0] = NULL; myTriangleFacets[1] = NULL; }
int CubitQuadFacetData::tri_to_quad_index | ( | int | tri_index, |
int | pt_index | ||
) | [inline, virtual] |
Implements CubitQuadFacet.
Definition at line 25 of file CubitQuadFacetData.hpp.
{ return triToQuadIndex[ tri_index ][ pt_index ]; }
CubitFacet* CubitQuadFacetData::myTriangleFacets[2] [private] |
Definition at line 12 of file CubitQuadFacetData.hpp.
int CubitQuadFacetData::triToQuadIndex[2][3] [private] |
Definition at line 13 of file CubitQuadFacetData.hpp.