|
cgma
|
#include <FBPolyhedron.hpp>
Public Member Functions | |
| FBPolyhedron () | |
| ~FBPolyhedron () | |
| CubitStatus | makepoly (const std::vector< double > &coords, const std::vector< int > &connections, std::vector< int > *f_c_indices) |
| bool | boxintersection (FBPolyhedron *otherpoly) |
| CubitStatus | retriangulate (std::vector< int > &newfacets, std::vector< int > &newfacetsindex) |
| CubitStatus | retriangulate (std::vector< int > &newfacets) |
| bool | edge_exists_in_tri (FB_Triangle &tri, int v0, int v1) |
Private Member Functions | |
| int | makeahashvaluefrom_coord (double x, double y, double z) |
| int | addavertex (double x, double y, double z) |
| void | putnewpoints (std::vector< double > &newpoints) |
| void | putedges (std::vector< int > &newedges) |
| bool | edge_exists (int v0, int v1) |
| void | add_new_triangle_data () |
| void | make_tri_plane_coeffs (FB_Triangle *tri) |
| void | make_tri_boundingbox (FB_Triangle *tri) |
| void | removeduddedtriangles () |
| bool | min_max_angles_in_fb_triangle (FB_Triangle *tri, double &min_angle, double &max_angle) |
| Find the min and max angles in the given Triangle. | |
| bool | min_max_angles_in_polyhedron (double &min_angle, double &max_angle) |
| void | debug_draw_fb_triangle (FB_Triangle *tri) |
| Debug draw a triangle. | |
| void | debug_draw_boundary_edges (int color) |
| bool | remove_small_angles_in_triangle_range (int lower_index, int upper_index) |
Private Attributes | |
| std::vector< FB_Coord * > | verts |
| std::vector< FB_Triangle * > | tris |
| std::vector< FB_Edge * > | intersection_edges |
| std::vector< FB_Triangle * > | dudded_tris |
| std::vector< FB_Edge * > | orphaned_edges |
| std::multimap< unsigned int, unsigned int > | edgmmap |
| double | polyxmin |
| double | polyxmax |
| double | polyymin |
| double | polyymax |
| double | polyzmin |
| double | polyzmax |
| IntegerHash * | hashobj |
| unsigned int | numpts |
| unsigned int | numtris |
| KDTree * | kdtree |
| int | original_numtris |
Friends | |
| class | FBIntersect |
| class | FBClassify |
| class | FBImprint |
Definition at line 36 of file FBPolyhedron.hpp.
Definition at line 40 of file FBPolyhedron.cpp.
{
polyxmin = polyymin = polyzmin = CUBIT_DBL_MAX;
polyxmax = polyymax = polyzmax = -polyxmin;
hashobj = new IntegerHash(NUMHASHBINS,20);
original_numtris = 0;
}
Definition at line 50 of file FBPolyhedron.cpp.
{
unsigned int i;
delete hashobj;
delete kdtree;
for ( i = 0; i < verts.size(); i++ ) {
delete verts[i];
}
for ( i = 0; i < tris.size(); i++ ) {
delete tris[i];
}
for ( i = 0; i < dudded_tris.size(); i++ ) {
delete dudded_tris[i];
}
for ( i = 0; i < orphaned_edges.size(); i++ )
{
delete orphaned_edges[i];
}
}
| void FBPolyhedron::add_new_triangle_data | ( | ) | [private] |
Definition at line 425 of file FBPolyhedron.cpp.
{
unsigned int i;
FB_Triangle *tri;
for ( i = original_numtris; i < tris.size(); i++ ) {
tri = tris[i];
// make the bounding box
make_tri_boundingbox(tri);
// make the plane coefficients
make_tri_plane_coeffs(tri);
}
}
| int FBPolyhedron::addavertex | ( | double | x, |
| double | y, | ||
| double | z | ||
| ) | [private] |
Definition at line 170 of file FBPolyhedron.cpp.
{
int hashvalue, i, ifoundit;
int *hasharrayptr, hasharraysize;
double xval, yval, zval;
FB_Coord *mycoord, *newcoord;
hashvalue = makeahashvaluefrom_coord(x,y,z);
hasharrayptr = hashobj->getHashBin(hashvalue,&hasharraysize);
ifoundit = -1;
for ( i = 0; i < hasharraysize; i++ ) {
mycoord = verts[hasharrayptr[i]];
xval = mycoord->coord[0];
yval = mycoord->coord[1];
zval = mycoord->coord[2];
if ( ( fabs(xval-x) < EPSILON ) &&
( fabs(yval-y) < EPSILON ) &&
( fabs(zval-z) < EPSILON ) ) {
ifoundit = hasharrayptr[i];
break;
}
}
if ( ifoundit == -1 ) {
newcoord = new FB_Coord(x,y,z);
ifoundit = verts.size();
verts.push_back(newcoord);
hashobj->addtoHashList(hashvalue,ifoundit);
}
verts[ifoundit]->is_on_boundary = true;
return ifoundit;
}
| bool FBPolyhedron::boxintersection | ( | FBPolyhedron * | otherpoly | ) |
Definition at line 138 of file FBPolyhedron.cpp.
{
double xmin, ymin, zmin, xmax, ymax, zmax;
xmin = otherpoly->polyxmin;
ymin = otherpoly->polyymin;
zmin = otherpoly->polyzmin;
xmax = otherpoly->polyxmax;
ymax = otherpoly->polyymax;
zmax = otherpoly->polyzmax;
if ( (polyxmin > xmax) || (polyxmax < xmin) ) return false;
if ( (polyymin > ymax) || (polyymax < ymin) ) return false;
if ( (polyzmin > zmax) || (polyzmax < zmin) ) return false;
return true;
}
| void FBPolyhedron::debug_draw_boundary_edges | ( | int | color | ) | [private] |
Debug draw the edges in the polyhedron that are marked boundary (ie, draw the edges that have a cubit_edge).
Definition at line 585 of file FBPolyhedron.cpp.
{
unsigned int i;
FB_Triangle* triangle=NULL;
for(i = 0; i<tris.size(); i++){
if(!tris[i]->dudded){
triangle = tris[i];
unsigned int counter = 0;
CubitVector vert_0(verts[triangle->v0]->coord[0],
verts[triangle->v0]->coord[1],
verts[triangle->v0]->coord[2]);
CubitVector vert_1(verts[triangle->v1]->coord[0],
verts[triangle->v1]->coord[1],
verts[triangle->v1]->coord[2]);
CubitVector vert_2(verts[triangle->v2]->coord[0],
verts[triangle->v2]->coord[1],
verts[triangle->v2]->coord[2]);
if(triangle->cubitedge0index){
counter++;
GfxDebug::draw_line(vert_0, vert_1, color);
}
if(triangle->cubitedge1index){
counter++;
GfxDebug::draw_line(vert_1, vert_2, color);
}
if(triangle->cubitedge2index){
counter++;
GfxDebug::draw_line(vert_2, vert_0, color);
}
if(counter != triangle->edge_list.size()){
PRINT_WARNING("Possible debug problem.\n");
}
}
}
}
| void FBPolyhedron::debug_draw_fb_triangle | ( | FB_Triangle * | tri | ) | [private] |
Debug draw a triangle.
Definition at line 622 of file FBPolyhedron.cpp.
{
CubitVector vert_0(verts[triangle->v0]->coord[0],
verts[triangle->v0]->coord[1],
verts[triangle->v0]->coord[2]);
CubitVector vert_1(verts[triangle->v1]->coord[0],
verts[triangle->v1]->coord[1],
verts[triangle->v1]->coord[2]);
CubitVector vert_2(verts[triangle->v2]->coord[0],
verts[triangle->v2]->coord[1],
verts[triangle->v2]->coord[2]);
GfxDebug::draw_point(vert_0, CUBIT_RED_INDEX);
GfxDebug::draw_point(vert_1, CUBIT_RED_INDEX);
GfxDebug::draw_point(vert_2, CUBIT_RED_INDEX);
GfxDebug::draw_line(vert_0, vert_1, CUBIT_BLUE_INDEX);
GfxDebug::draw_line(vert_1, vert_2, CUBIT_BLUE_INDEX);
GfxDebug::draw_line(vert_2, vert_0, CUBIT_BLUE_INDEX);
int draw_normal = 1;
if(draw_normal){
CubitVector center_pos = (vert_0+vert_1+vert_2)/3.0;
CubitVector opp_pos = center_pos + (vert_1-vert_0)*(vert_2-vert_0);
GfxDebug::draw_line(center_pos, opp_pos, CUBIT_WHITE_INDEX);
}
}
| bool FBPolyhedron::edge_exists | ( | int | v0, |
| int | v1 | ||
| ) | [private] |
Definition at line 348 of file FBPolyhedron.cpp.
{
bool exists = false;
unsigned int i;
for ( i = 0; i < intersection_edges.size(); i++ ) {
if ( ( (intersection_edges[i]->v0 == v0) &&
(intersection_edges[i]->v1 == v1) ) ||
( (intersection_edges[i]->v0 == v1) &&
(intersection_edges[i]->v1 == v0) ) ) {
exists = true;
break;
}
}
return exists;
}
| bool FBPolyhedron::edge_exists_in_tri | ( | FB_Triangle & | tri, |
| int | v0, | ||
| int | v1 | ||
| ) |
Definition at line 408 of file FBPolyhedron.cpp.
| void FBPolyhedron::make_tri_boundingbox | ( | FB_Triangle * | tri | ) | [private] |
Definition at line 477 of file FBPolyhedron.cpp.
{
double xmin, ymin, zmin, xmax, ymax, zmax;
int j;
int connections[3];
FB_Coord *mycoord;
xmin = ymin = zmin = CUBIT_DBL_MAX;
xmax = ymax = zmax = -xmin;
connections[0] = tri->v0; connections[1] = tri->v1; connections[2] = tri->v2;
for ( j = 0; j < 3; j++ ) { // make the bounding box
mycoord = verts[connections[j]];
xmin = ( xmin < mycoord->coord[0] ) ? xmin : mycoord->coord[0];
xmax = ( xmax > mycoord->coord[0] ) ? xmax : mycoord->coord[0];
ymin = ( ymin < mycoord->coord[1] ) ? ymin : mycoord->coord[1];
ymax = ( ymax > mycoord->coord[1] ) ? ymax : mycoord->coord[1];
zmin = ( zmin < mycoord->coord[2] ) ? zmin : mycoord->coord[2];
zmax = ( zmax > mycoord->coord[2] ) ? zmax : mycoord->coord[2];
}
if ( (xmax - xmin) < BOX_CRACK ) {
xmax += BOX_CRACK; xmin -= BOX_CRACK;
}
if ( (ymax - ymin) < BOX_CRACK ) {
ymax += BOX_CRACK; ymin -= BOX_CRACK;
}
if ( (zmax - zmin) < BOX_CRACK ) {
zmax += BOX_CRACK; zmin -= BOX_CRACK;
}
tri->boundingbox.xmin = xmin; tri->boundingbox.xmax = xmax;
tri->boundingbox.ymin = ymin; tri->boundingbox.ymax = ymax;
tri->boundingbox.zmin = zmin; tri->boundingbox.zmax = zmax;
// Update the object's bounding box
polyxmin = ( polyxmin < xmin ) ? polyxmin : xmin;
polyymin = ( polyymin < ymin ) ? polyymin : ymin;
polyzmin = ( polyzmin < zmin ) ? polyzmin : zmin;
polyxmax = ( polyxmax > xmax ) ? polyxmax : xmax;
polyymax = ( polyymax > ymax ) ? polyymax : ymax;
polyzmax = ( polyzmax > zmax ) ? polyzmax : zmax;
}
| void FBPolyhedron::make_tri_plane_coeffs | ( | FB_Triangle * | tri | ) | [private] |
Definition at line 441 of file FBPolyhedron.cpp.
{
FB_Coord *mycoord;
double x1, x2, x3, y1, y2, y3, z1, z2, z3, e1x, e1y, e1z, e2x, e2y, e2z;
double a, b, c, d, dtemp;
mycoord = verts[tri->v0];
x1 = mycoord->coord[0];
y1 = mycoord->coord[1];
z1 = mycoord->coord[2];
mycoord = verts[tri->v1];
x2 = mycoord->coord[0];
y2 = mycoord->coord[1];
z2 = mycoord->coord[2];
mycoord = verts[tri->v2];
x3 = mycoord->coord[0];
y3 = mycoord->coord[1];
z3 = mycoord->coord[2];
e1x = x1 - x2; e1y = y1 - y2; e1z = z1 - z2;
e2x = x3 - x2; e2y = y3 - y2; e2z = z3 - z2;
a = e1z*e2y - e2z*e1y;
b = e1x*e2z - e2x*e1z;
c = e1y*e2x - e2y*e1x;
dtemp = sqrt(a*a + b*b + c*c);
if ( dtemp > EPSILON2 ) {
a /= dtemp;
b /= dtemp;
c /= dtemp;
} else {
PRINT_WARNING("small-area triangle\n");
}
d = -(a*x1 + b*y1 + c*z1);
tri->a = a; tri->b = b; tri->c = c; tri->d = d;
}
| int FBPolyhedron::makeahashvaluefrom_coord | ( | double | x, |
| double | y, | ||
| double | z | ||
| ) | [private] |
Definition at line 156 of file FBPolyhedron.cpp.
{
double mantissasum;
if ( fabs(x) < 1.e-3 ) x = 0.0;
if ( fabs(y) < 1.e-3 ) y = 0.0;
if ( fabs(z) < 1.e-3 ) z = 0.0;
mantissasum = (int)(10000.0*fabs(x) + 0.5) +
(int)(10000.0*fabs(y) + 0.5) +
(int)(10000.0*fabs(z) + 0.5);
return (int)(mantissasum) % NUMHASHBINS;
}
| CubitStatus FBPolyhedron::makepoly | ( | const std::vector< double > & | coords, |
| const std::vector< int > & | connections, | ||
| std::vector< int > * | f_c_indices | ||
| ) |
Definition at line 77 of file FBPolyhedron.cpp.
{
int hashvalue, parent, cubitfacetindex;
int cubitedge0index, cubitedge1index, cubitedge2index;
unsigned int i;
FB_Coord *mycoord;
FB_Triangle *mytri;
CubitStatus status;
FSBOXVECTOR boxvector;
std::vector<int>::iterator dpi;
status = CUBIT_SUCCESS;
for ( i = 0; i < coords.size(); i += 3 ) {
mycoord = new FB_Coord(coords[i],coords[i+1],coords[i+2]);
hashvalue = makeahashvaluefrom_coord(coords[i],coords[i+1],coords[i+2]);
hashobj->addtoHashList(hashvalue,verts.size());
verts.push_back(mycoord);
}
numpts = verts.size();
parent = -1;
if ( f_c_indices ){
dpi = f_c_indices->begin();
}
for ( i = 0; i < connections.size(); i += 3 ) {
//as a safety check make, not only do we see if we have the
// f_c_indices vector, but make sure we don't go past the end of
// that vector.
if ( f_c_indices && (i<f_c_indices->size())){
cubitfacetindex = *dpi;
cubitedge0index = *(dpi+1);
cubitedge1index = *(dpi+2);
cubitedge2index = *(dpi+3);
dpi += 4;
}
else {
cubitfacetindex = 0;
cubitedge0index = cubitedge1index = cubitedge2index = 0;
}
mytri = new FB_Triangle(connections[i],connections[i+1],connections[i+2],
parent,cubitfacetindex,cubitedge0index,
cubitedge1index,cubitedge2index);
make_tri_boundingbox(mytri);
boxvector.push_back(&mytri->boundingbox); // for the KdTree
make_tri_plane_coeffs(mytri);
tris.push_back(mytri);
}
numtris = original_numtris = tris.size();
kdtree = new KDTree();
kdtree->makeKDTree(numtris,boxvector);
return status;
}
| bool FBPolyhedron::min_max_angles_in_fb_triangle | ( | FB_Triangle * | tri, |
| double & | min_angle, | ||
| double & | max_angle | ||
| ) | [private] |
Find the min and max angles in the given Triangle.
Definition at line 540 of file FBPolyhedron.cpp.
{
CubitVector vert_0(verts[triangle->v0]->coord[0],
verts[triangle->v0]->coord[1],
verts[triangle->v0]->coord[2]);
CubitVector vert_1(verts[triangle->v1]->coord[0],
verts[triangle->v1]->coord[1],
verts[triangle->v1]->coord[2]);
CubitVector vert_2(verts[triangle->v2]->coord[0],
verts[triangle->v2]->coord[1],
verts[triangle->v2]->coord[2]);
CubitVector sides[3];
sides[0] = vert_1 - vert_0;
sides[1] = vert_2 - vert_1;
sides[2]= vert_0 - vert_2;
if(sides[0].length_squared() < EPSILON ||
sides[1].length_squared() < EPSILON ||
sides[2].length_squared() < EPSILON ){
min_angle =0.0;
max_angle =180.0;
return false;
}
double curr_angle;
min_angle = sides[1].interior_angle(-sides[0]);
max_angle = min_angle;
curr_angle = sides[2].interior_angle(-sides[1]);
if(curr_angle<min_angle){
min_angle=curr_angle;
}
if(curr_angle>max_angle){
min_angle=curr_angle;
}
curr_angle = sides[0].interior_angle(-sides[2]);
if(curr_angle<min_angle){
min_angle=curr_angle;
}
if(curr_angle>max_angle){
min_angle=curr_angle;
}
return true;
}
| bool FBPolyhedron::min_max_angles_in_polyhedron | ( | double & | min_angle, |
| double & | max_angle | ||
| ) | [private] |
Find the min and max angles in the polyhedron (ie, min and max angle in any triangle).
Definition at line 650 of file FBPolyhedron.cpp.
{
double curr_min;
double curr_max;
if(tris.size() < 1){
min_angle = 0.0;
max_angle = 180.0;
return false;
}
min_max_angles_in_fb_triangle(tris[0], min_angle, max_angle);
unsigned int i;
for(i = 1; i<tris.size(); i++){
if(!min_max_angles_in_fb_triangle(tris[i], curr_min, curr_max)){
return false;
}
if(curr_min<min_angle){
min_angle=curr_min;
}
if(curr_max>max_angle){
max_angle=curr_max;
}
}
return true;
}
| void FBPolyhedron::putedges | ( | std::vector< int > & | newedges | ) | [private] |
Definition at line 225 of file FBPolyhedron.cpp.
{
std::deque<unsigned int> edgedeque;
std::multimap<unsigned int,unsigned int>::iterator p3;
unsigned int startedge, startvert, edgnum;
std::multimap<unsigned int,unsigned int>::iterator pub;
unsigned int first, second;
unsigned int i, numedgesadded;
int v0, v1;
bool foundone;
for ( i = 0; i < intersection_edges.size(); i++ ) {
v0 = intersection_edges[i]->v0;
v1 = intersection_edges[i]->v1;
edgnum = i;
edgmmap.insert(std::pair<const unsigned int, unsigned int>(v0,edgnum));
edgmmap.insert(std::pair<const unsigned int, unsigned int>(v1,edgnum));
}
numedgesadded = 0;
startedge = 0;
while ( numedgesadded < intersection_edges.size() ) {
if ( intersection_edges[startedge]->mark == true ) {
startedge++;
continue;
}
startvert = v0 = intersection_edges[startedge]->v0;
v1 = intersection_edges[startedge]->v1;
intersection_edges[startedge]->mark = true;
numedgesadded += 1;
edgedeque.push_back(v0);
edgedeque.push_back(v1);
foundone = true;
while ( foundone == true ) {
p3 = edgmmap.find(v1);
pub = edgmmap.upper_bound(v1);
if ( p3 != edgmmap.end() ) {
do {
foundone = false;
first = p3->first;
second = p3->second;
if ( (second == startedge) && (first == startvert) ) {
break;
}
if ( (intersection_edges[second]->v0 != v0) &&
(intersection_edges[second]->v1 != v0) ) {
if ( intersection_edges[second]->mark == true ) {
p3++;
continue;
}
if (intersection_edges[second]->v0 == v1 ) {
v1 = intersection_edges[second]->v1;
v0 = intersection_edges[second]->v0;
} else {
v1 = intersection_edges[second]->v0;
v0 = intersection_edges[second]->v1;
}
intersection_edges[second]->mark = true;
numedgesadded += 1;
edgedeque.push_back(v1);
foundone = true;
}
p3++;
} while ( (p3 != pub) && (foundone == false) );
if ( foundone == false ) break;
}
} // end while ( foundone == true )
v1 = startvert;
foundone = true;
while ( foundone == true ) {
p3 = edgmmap.find(v1);
pub = edgmmap.upper_bound(v1);
if ( p3 != edgmmap.end() ) {
do {
foundone = false;
first = p3->first;
second = p3->second;
if ( (intersection_edges[second]->v0 == v1) ||
(intersection_edges[second]->v1 == v1) ) {
if ( intersection_edges[second]->mark == true ) {
p3++;
continue;
}
if (intersection_edges[second]->v0 == v1 ) {
v1 = intersection_edges[second]->v1;
v0 = intersection_edges[second]->v0;
} else {
v1 = intersection_edges[second]->v0;
v0 = intersection_edges[second]->v1;
}
intersection_edges[second]->mark = true;
numedgesadded += 1;
edgedeque.push_front(v1);
foundone = true;
}
p3++;
} while ( (p3 != pub) && (foundone == false) );
if ( foundone == false ) break;
}
}
unsigned int size = edgedeque.size();
if ( size > 0 ) {
newedges.push_back(size);
for ( i = 0; i < size; i++ ) {
newedges.push_back(edgedeque[i]);
}
}
edgedeque.clear();
startedge++;
} // end while ( numedgesadded < intersection_edges.size() )
newedges.push_back(0);
}
| void FBPolyhedron::putnewpoints | ( | std::vector< double > & | newpoints | ) | [private] |
Definition at line 205 of file FBPolyhedron.cpp.
{
double coordinate;
unsigned int i;
// numpts is the original number of points. Any new points were added
// onto the end of the verts vector.
if ( verts.size() > numpts ) {
for ( i = numpts; i < verts.size(); i++ ) {
coordinate = verts[i]->coord[0];
newpoints.push_back(coordinate);
coordinate = verts[i]->coord[1];
newpoints.push_back(coordinate);
coordinate = verts[i]->coord[2];
newpoints.push_back(coordinate);
}
}
}
| bool FBPolyhedron::remove_small_angles_in_triangle_range | ( | int | lower_index, |
| int | upper_index | ||
| ) | [private] |
This a function that attempts to remove small angles from the polyhedron.
| void FBPolyhedron::removeduddedtriangles | ( | ) | [private] |
Definition at line 519 of file FBPolyhedron.cpp.
| CubitStatus FBPolyhedron::retriangulate | ( | std::vector< int > & | newfacets, |
| std::vector< int > & | newfacetsindex | ||
| ) |
Definition at line 366 of file FBPolyhedron.cpp.
{
CubitStatus status;
FBRetriangulate *retriangulater;
unsigned int i;
status = CUBIT_SUCCESS;
for ( i = 0; i < tris.size(); i++ ) {
if ( tris[i]->dudded == true ) {
tris[i]->parent = (int)i;
retriangulater = new FBRetriangulate(verts, tris, newfacets, newfacetsindex);
status = retriangulater->retriangulate_this_tri(i, orphaned_edges);
delete retriangulater;
}
}
return status;
}
| CubitStatus FBPolyhedron::retriangulate | ( | std::vector< int > & | newfacets | ) |
Definition at line 387 of file FBPolyhedron.cpp.
{
CubitStatus status;
FBRetriangulate *retriangulater;
unsigned int i;
status = CUBIT_SUCCESS;
for ( i = 0; i < tris.size(); i++ ) {
if ( tris[i]->dudded == true ) {
tris[i]->parent = (int)i;
retriangulater = new FBRetriangulate(verts, tris, newfacets);
status = retriangulater->retriangulate_this_tri(i, orphaned_edges);
std::vector<FB_Edge*>::iterator iter;
delete retriangulater;
}
}
return status;
}
friend class FBClassify [friend] |
Definition at line 39 of file FBPolyhedron.hpp.
friend class FBImprint [friend] |
Definition at line 40 of file FBPolyhedron.hpp.
friend class FBIntersect [friend] |
Definition at line 38 of file FBPolyhedron.hpp.
std::vector<FB_Triangle*> FBPolyhedron::dudded_tris [private] |
Definition at line 58 of file FBPolyhedron.hpp.
std::multimap<unsigned int,unsigned int> FBPolyhedron::edgmmap [private] |
Definition at line 60 of file FBPolyhedron.hpp.
IntegerHash* FBPolyhedron::hashobj [private] |
Definition at line 62 of file FBPolyhedron.hpp.
std::vector<FB_Edge *> FBPolyhedron::intersection_edges [private] |
Definition at line 57 of file FBPolyhedron.hpp.
KDTree* FBPolyhedron::kdtree [private] |
Definition at line 69 of file FBPolyhedron.hpp.
unsigned int FBPolyhedron::numpts [private] |
Definition at line 65 of file FBPolyhedron.hpp.
unsigned int FBPolyhedron::numtris [private] |
Definition at line 65 of file FBPolyhedron.hpp.
int FBPolyhedron::original_numtris [private] |
Definition at line 70 of file FBPolyhedron.hpp.
std::vector<FB_Edge*> FBPolyhedron::orphaned_edges [private] |
Definition at line 59 of file FBPolyhedron.hpp.
double FBPolyhedron::polyxmax [private] |
Definition at line 61 of file FBPolyhedron.hpp.
double FBPolyhedron::polyxmin [private] |
Definition at line 61 of file FBPolyhedron.hpp.
double FBPolyhedron::polyymax [private] |
Definition at line 61 of file FBPolyhedron.hpp.
double FBPolyhedron::polyymin [private] |
Definition at line 61 of file FBPolyhedron.hpp.
double FBPolyhedron::polyzmax [private] |
Definition at line 61 of file FBPolyhedron.hpp.
double FBPolyhedron::polyzmin [private] |
Definition at line 61 of file FBPolyhedron.hpp.
std::vector<FB_Triangle *> FBPolyhedron::tris [private] |
Definition at line 56 of file FBPolyhedron.hpp.
std::vector<FB_Coord *> FBPolyhedron::verts [private] |
Definition at line 55 of file FBPolyhedron.hpp.