cgma
|
#include <set>
#include <map>
#include <vector>
#include "CubitDefines.h"
#include "ChollaEngine.hpp"
#include "DLIList.hpp"
#include "TDGeomFacet.hpp"
#include "CastTo.hpp"
#include "ChollaSkinTool.hpp"
#include "ChollaVolume.hpp"
#include "ChollaSurface.hpp"
#include "ChollaCurve.hpp"
#include "ChollaPoint.hpp"
#include "CubitFacet.hpp"
#include "CubitFacetData.hpp"
#include "CubitFacetEdge.hpp"
#include "CubitFacetEdgeData.hpp"
#include "CubitPoint.hpp"
#include "CubitPointData.hpp"
#include "FacetEntity.hpp"
#include "FacetEvalTool.hpp"
#include "FacetDataUtil.hpp"
#include "ChollaDebug.hpp"
#include "TDFacetBoundaryEdge.hpp"
#include "TDFacetBoundaryPoint.hpp"
#include "CurveFacetEvalTool.hpp"
#include "Cholla.h"
#include "GfxDebug.hpp"
#include "TDFacetboolData.hpp"
#include "GMem.hpp"
Go to the source code of this file.
Functions | |
static CubitStatus | create_tri_facets (int *face_list, int current_position, CubitPoint **point_list, DLIList< CubitFacet * > &facet_list) |
static CubitStatus create_tri_facets | ( | int * | face_list, |
int | current_position, | ||
CubitPoint ** | point_list, | ||
DLIList< CubitFacet * > & | facet_list | ||
) | [static] |
Definition at line 2910 of file ChollaEngine.cpp.
{ int step = face_list[current_position]; //This function is hard coded to work for splitting 4, 5, and 6 //faceted points into triangles. if ( step > 6 || step < 4 ) { PRINT_ERROR("Trying to split facets with wrong function.\n"); return CUBIT_FAILURE; } //Basically get the points in a list first. int ii = current_position + 1, jj; DLIList <CubitPoint*> temp_points; for( jj = ii; jj < ii+step; jj++ ) { int index_to_point = face_list[jj]; assert(index_to_point >= 0 ); temp_points.append(point_list[index_to_point]); } //Now cycle through the points and creat facets from them. CubitPoint *point_1, *point_2, *point_3; //This definatly could be improved to get more optimal triangles... //Create the first two facets in the normal way. This is the //same for 4, 5 and 6 points. for ( jj = 0; jj < 2; jj++ ) { point_1 = temp_points.get_and_step(); point_2 = temp_points.get_and_step(); point_3 = temp_points.get(); //If these are colinear we are screwed... CubitFacet *new_facet = (CubitFacet *) new CubitFacetData(point_1, point_2, point_3); facet_list.append(new_facet); } //create the third facet for 5 points. if ( step == 5 ) { //Now create the last facet with the first point, last point and //third point. temp_points.reset(); point_1 = temp_points.prev(); point_2 = temp_points.get(); point_3 = temp_points.next(2); CubitFacet *new_facet = (CubitFacet *) new CubitFacetData(point_1, point_2, point_3); facet_list.append(new_facet); } //create the third and fourth for 6 points. else if ( step == 6 ) { //get the current point (should be position 5/6) point_1 = temp_points.get(); //get the next point. (should be position 6/6) point_2 = temp_points.next(); //get the prev(2) point. ( should be position 3/6) point_3 = temp_points.prev(2); CubitFacet *new_facet = (CubitFacet *) new CubitFacetData(point_1, point_2, point_3); facet_list.append(new_facet); // get the next point. (should be 6/6) point_1 = temp_points.next(); // get the next 2 point ( should be 1/6) point_2 = temp_points.next(2); //point3 stays the same (position 3/6). new_facet = (CubitFacet *) new CubitFacetData(point_1, point_2, point_3); facet_list.append(new_facet); } return CUBIT_SUCCESS; }