#include "MGCLStdAfx.h" #include "Tl2/TL2Triangle.h" #include "Tl2/TL2Fan.h" #if defined(_DEBUG) #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //Test if the edge(i,j) is used or not where i is the index of this edge. bool mgTL2Fan::edge_is_used(int j)const{ CEUitr l,ls=m_used_edges.begin(), le=m_used_edges.end(); l=std::find(ls,le, j); return l!=le; } //頂点周辺の頂点リストからindexを検索する(後ろから検索) //If found, iterator of the index be returned. //If not found , end() will be returned. mgTL2Fan::IndexItr mgTL2Fan::find_aft(int index){ int n=size(); for(int j=n-1; j>=0; j--){ if(m_indices[j]==index) return begin()+j; } return end(); } //Print out indices as "|n0,n1,.... void mgTL2Fan::print_indices(std::ostream& out)const{ int n=size(); int nm1=n-1; for(int i=0; i<n; i++){ int id=(*this)[i]; out<<id; if(i<nm1) out<<","; } } //Set the edge(i,j) as used where i is the index of this fan's vertex. void mgTL2Fan::set_edge_used(int j){ EUitr l,ls=m_used_edges.begin(), le=m_used_edges.end(); l=std::find(ls,le, j); if(l==le) m_used_edges.push_back(j); } std::ostream& operator<< (std::ostream& out, const mgTL2Fan& fan){ int n=fan.size(); out<<"Fan::num of indices="<<n<<"::"; if(n) out<<fan.m_indices[0]; for(int i=1; i<n; i++) out<<","<<fan.m_indices[i]; return out; }