Public Member Functions | |
| void | init (void) |
| bool | valid (void) |
| void | resetDegreeState (const Int32 type) |
| void | drop (void) |
| bool | verify (void) |
Public Attributes | |
| Int32 | state |
| Triangle * | next |
| Triangle * | prev |
| HalfEdge | halfEdgeVec [3] |
Definition at line 99 of file OSGHalfEdgeGraph.h.
|
|
Definition at line 73 of file OSGHalfEdgeGraph.inl. References osg::HalfEdgeGraph::DEGREE_0, halfEdgeVec, osg::HalfEdgeGraph::HalfEdge::next, next, prev, state, and osg::HalfEdgeGraph::HalfEdge::triangle. Referenced by osg::HalfEdgeGraph::addTriangle(). 00074 { 00075 state = DEGREE_0; 00076 next = prev = 0; 00077 halfEdgeVec[0].next = &(halfEdgeVec[1]); 00078 halfEdgeVec[0].triangle = this; 00079 halfEdgeVec[1].next = &(halfEdgeVec[2]); 00080 halfEdgeVec[1].triangle = this; 00081 halfEdgeVec[2].next = &(halfEdgeVec[0]); 00082 halfEdgeVec[2].triangle = this; 00083 }
|
|
|
Definition at line 86 of file OSGHalfEdgeGraph.inl. References osg::HalfEdgeGraph::DEGREE_0, and state. Referenced by osg::HalfEdgeGraph::calcOptPrim().
|
|
|
Definition at line 92 of file OSGHalfEdgeGraph.inl. References halfEdgeVec, state, osg::HalfEdgeGraph::HalfEdge::triangle, and osg::HalfEdgeGraph::HalfEdge::twin. Referenced by osg::HalfEdgeGraph::calcOptPrim(). 00093 { 00094 state = (halfEdgeVec[0].twin && 00095 (halfEdgeVec[0].twin->triangle->state >= type) ? 1 : 0) + 00096 (halfEdgeVec[1].twin && 00097 (halfEdgeVec[1].twin->triangle->state >= type) ? 1 : 0) + 00098 (halfEdgeVec[2].twin && 00099 (halfEdgeVec[2].twin->triangle->state >= type) ? 1 : 0); 00100 }
|
|
|
Definition at line 103 of file OSGHalfEdgeGraph.inl. References halfEdgeVec, state, osg::HalfEdgeGraph::HalfEdge::triangle, and osg::HalfEdgeGraph::HalfEdge::twin. Referenced by osg::HalfEdgeGraph::calcOptPrim(). 00104 { 00105 if(halfEdgeVec[0].twin && (halfEdgeVec[0].twin->triangle->state > 0)) 00106 halfEdgeVec[0].twin->triangle->state--; 00107 if(halfEdgeVec[1].twin && (halfEdgeVec[1].twin->triangle->state > 0)) 00108 halfEdgeVec[1].twin->triangle->state--; 00109 if(halfEdgeVec[2].twin && (halfEdgeVec[2].twin->triangle->state > 0)) 00110 halfEdgeVec[2].twin->triangle->state--; 00111 }
|
|
|
Definition at line 105 of file OSGHalfEdgeGraph.cpp. References FINFO, halfEdgeVec, osg::HalfEdgeGraph::HalfEdge::next, SINFO, osg::HalfEdgeGraph::HalfEdge::triangle, osg::HalfEdgeGraph::HalfEdge::twin, and osg::HalfEdgeGraph::HalfEdge::vertexStart(). 00106 { 00107 bool retCode = true; 00108 Triangle *neighbor[3]; 00109 Triangle *tP; 00110 00111 neighbor[0] = halfEdgeVec[0].twin ? halfEdgeVec[0].twin->triangle : 0; 00112 neighbor[1] = halfEdgeVec[1].twin ? halfEdgeVec[1].twin->triangle : 0; 00113 neighbor[2] = halfEdgeVec[2].twin ? halfEdgeVec[2].twin->triangle : 0; 00114 00115 if ( ( neighbor[0] && 00116 ( (neighbor[0] == neighbor[1] ) || 00117 (neighbor[0] == neighbor[2] ) 00118 ) 00119 ) || 00120 ( neighbor[1] && 00121 ( (neighbor[1] == neighbor[0] ) || 00122 (neighbor[1] == neighbor[2] ) ) 00123 ) || 00124 ( neighbor[2] && 00125 ( (neighbor[2] == neighbor[0] ) || 00126 (neighbor[2] == neighbor[1] ) ) 00127 ) 00128 ) 00129 { 00130 FINFO(("HalfEdgeGraph::Triangle::verify: Neighbor linked more " 00131 "than once: %p/%p/%p\n", neighbor[0], 00132 neighbor[1], 00133 neighbor[2])); 00134 retCode = false; 00135 } 00136 00137 if((halfEdgeVec[0].vertexStart() == halfEdgeVec[1].vertexStart()) || 00138 (halfEdgeVec[0].vertexStart() == halfEdgeVec[2].vertexStart()) || 00139 (halfEdgeVec[1].vertexStart() == halfEdgeVec[2].vertexStart())) 00140 { 00141 SINFO << "HalfEdgeGraph::Triangle::verify: Invalid collapsed Triangle" 00142 << endl; 00143 retCode = false; 00144 } 00145 00146 if((halfEdgeVec[0].triangle != this) || 00147 (halfEdgeVec[1].triangle != this) || 00148 (halfEdgeVec[2].triangle != this)) 00149 { 00150 SINFO << "HalfEdgeGraph::Triangle::verify: Invalid halfEdge->" 00151 << "triangle pointer" << endl; 00152 retCode = false; 00153 } 00154 00155 if((halfEdgeVec[0].next != &halfEdgeVec[1]) || 00156 (halfEdgeVec[1].next != &halfEdgeVec[2]) || 00157 (halfEdgeVec[2].next != &halfEdgeVec[0])) 00158 { 00159 SINFO << "HalfEdgeGraph::Triangle::verify: Edge next link error" 00160 << endl; 00161 retCode = false; 00162 } 00163 00164 return retCode; 00165 }
|
|
|
Definition at line 103 of file OSGHalfEdgeGraph.h. Referenced by osg::HalfEdgeGraph::addHalfEdge(), osg::HalfEdgeGraph::addTriangle(), osg::HalfEdgeGraph::calcOptPrim(), drop(), osg::HalfEdgeGraph::dropOutTriangle(), init(), resetDegreeState(), and valid(). |
|
|
|
Definition at line 105 of file OSGHalfEdgeGraph.h. Referenced by osg::HalfEdgeGraph::TriangleList::add(), osg::HalfEdgeGraph::calcStripCost(), init(), osg::HalfEdgeGraph::TriangleList::paste(), and osg::HalfEdgeGraph::TriangleList::release(). |
|
|
Definition at line 106 of file OSGHalfEdgeGraph.h. Referenced by osg::HalfEdgeGraph::addTriangle(), osg::HalfEdgeGraph::calcOptPrim(), drop(), osg::HalfEdgeGraph::dropOutTriangle(), osg::HalfEdgeGraph::findGateEdge(), init(), resetDegreeState(), osg::HalfEdgeGraph::verify(), and verify(). |
1.4.3