TAPs 0.7.7.3
TAPsVertexRings2.cpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines