![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsVertexRings.cpp 00003 00004 VertexRings class is a class for generic 3D vertex rings. 00005 (Details are in its header file) 00006 00007 SUKITTI PUNAK (11/18/2004) 00008 UPDATE (11/18/2004) 00009 ******************************************************************************/ 00010 #include "TAPsVertexRings.hpp" 00011 // Using Inclusion Model (i.e. definitions are included in declarations) 00012 // (this name.cpp is included in name.hpp) 00013 // Each friend is defined directly inside its declaration. 00014 00015 BEGIN_NAMESPACE_TAPs 00016 //============================================================================= 00017 //----------------------------------------------------------------------------- 00018 // Constructor 00019 VertexRings::VertexRings ( std::vector<int> const * const pviVertexRing1List ) 00020 : m_pviVertexRing1List( pviVertexRing1List ) 00021 {} 00022 //----------------------------------------------------------------------------- 00023 // Destructor 00024 VertexRings::~VertexRings () 00025 {} 00026 //----------------------------------------------------------------------------- 00027 //============================================================================= 00028 // OPERATIONS 00029 //----------------------------------------------------------------------------- 00030 // Set vertex#i as the list of zeroth ring 00031 bool VertexRings::SetVertex ( int i ) 00032 { 00033 //---------------------------------------------------------------- 00034 // Clear the previous data 00035 m_viRingLayers.clear(); 00036 m_viRingVertices.clear(); 00037 //---------------------------------------------------------------- 00038 // Set the size of zeroth ring 00039 m_viRingLayers.push_back( 0 ); 00040 m_viRingLayers.push_back( 1 ); 00041 //---------------------------------------------------------------- 00042 // Set the zeroth ring vertex 00043 m_viRingVertices.push_back( i ); 00044 00045 return true; 00046 } 00047 //----------------------------------------------------------------------------- 00048 // Set vertices as the list of zeroth ring 00049 bool VertexRings::SetVertices ( int v[], int size ) 00050 { 00051 //---------------------------------------------------------------- 00052 // Clear the previous data 00053 m_viRingLayers.clear(); 00054 m_viRingVertices.clear(); 00055 //---------------------------------------------------------------- 00056 // Set the size of zeroth ring 00057 m_viRingLayers.push_back( 0 ); 00058 m_viRingLayers.push_back( size ); 00059 //---------------------------------------------------------------- 00060 // Set the vertices 00061 for ( int i = 0; i < size; ++i ) { 00062 m_viRingVertices.push_back( v[i] ); 00063 } 00064 00065 return true; 00066 } 00067 //----------------------------------------------------------------------------- 00068 // Add vertex#i to the list of zeroth ring 00069 //inline bool VertexRings::AddVertex ( int i ) 00070 //{ 00071 // return true; 00072 //} 00073 //----------------------------------------------------------------------------- 00074 // Add vertices to the list of zeroth ring 00075 //inline bool VertexRings::AddVertices ( int v[], int size ) 00076 //{ 00077 // return true; 00078 //} 00079 //----------------------------------------------------------------------------- 00080 // Increase one layer 00081 inline bool VertexRings::IncreaseOneLayer () 00082 { 00083 int count = 0; 00084 bool notInTheSet; 00085 int noLayers = static_cast<int>( m_viRingLayers.size() ) - 2; 00086 //std::cout << "Number of Ring Layers = " << noLayers << "\n"; 00087 for ( int i = m_viRingLayers[noLayers]; i < m_viRingLayers[noLayers+1]; ++i ) { 00088 //std::cout << "At vertex#" << m_viRingVertices[i] << "\n"; 00089 for ( int r = 0; r < static_cast<int>( m_pviVertexRing1List[ m_viRingVertices[i] ].size() ); ++r ) { 00090 //std::cout << " v#"; 00091 notInTheSet = true; 00092 for ( int vr = 0; vr < static_cast<int>( m_viRingVertices.size() ); ++vr ) { 00093 //std::cout << " " << m_pviVertexRing1List[ m_viRingVertices[i] ][r]; 00094 if ( m_pviVertexRing1List[ m_viRingVertices[i] ][r] == m_viRingVertices[vr] ) { 00095 notInTheSet = false; 00096 break; // break from the most inner loop 00097 } 00098 } 00099 //std::cout << "\n"; 00100 if ( notInTheSet ) { 00101 m_viRingVertices.push_back( m_pviVertexRing1List[ m_viRingVertices[i] ][r] ); 00102 ++count; 00103 } 00104 } 00105 } 00106 //std::cout << "count: " << count << std::endl; 00107 m_viRingLayers.push_back( count + m_viRingLayers[noLayers+1] ); 00108 00109 return true; 00110 } 00111 //----------------------------------------------------------------------------- 00112 // Decrease one layer 00113 inline bool VertexRings::DecreaseOneLayer () 00114 { 00115 return true; 00116 } 00117 //----------------------------------------------------------------------------- 00118 //============================================================================= 00119 END_NAMESPACE_TAPs 00120 //345678901234567890123456789012345678901234567890123456789012345678901234567890 00121 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8