本文整理汇总了C++中VertexRange::end方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexRange::end方法的具体用法?C++ VertexRange::end怎么用?C++ VertexRange::end使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexRange
的用法示例。
在下文中一共展示了VertexRange::end方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
list LinearCartesian1D_Domain::get_vertices()
{
list vertices;
typedef LinearCartesian1D_Domain_t DomainType;
typedef viennagrid::result_of::element_range<DomainType, viennagrid::vertex_tag>::type VertexRange;
typedef viennagrid::result_of::iterator<VertexRange>::type VertexIterator;
VertexRange range = viennagrid::elements(domain);
for (VertexIterator it = range.begin(); it != range.end(); ++it)
vertices.append<LinearCartesian1D_Vertex>(LinearCartesian1D_Vertex(*it));
return vertices;
}
示例2: out_of_range
LinearSpherical3D_Vertex LinearSpherical3D_Domain::get_vertex(unsigned int index)
{
typedef LinearSpherical3D_VertexRange_t VertexRange;
typedef viennagrid::result_of::iterator<VertexRange>::type VertexIterator;
typedef LinearSpherical3D_Vertex_t::id_type VertexIDType;
VertexIterator vertex = viennagrid::find_by_id(domain, VertexIDType(index));
VertexRange range = viennagrid::elements(domain);
if (vertex == range.end())
{
std::stringstream ss;
ss << "no vertex at index " << index;
throw std::out_of_range(ss.str());
}
return LinearSpherical3D_Vertex(*vertex);
}
示例3: main
int main( int argc, char** argv )
{
QApplication application(argc,argv);
string inputFilename = argc > 1 ? argv[ 1 ] : examplesPath+"/samples/Al.100.vol";
int threshold = argc > 2 ? atoi( argv[ 2 ] ) : 0;
int widthNum = argc > 3 ? atoi( argv[ 3 ] ) : 2;
int widthDen = argc > 4 ? atoi( argv[ 4 ] ) : 1;
//! [polyhedralizer-readVol]
trace.beginBlock( "Reading vol file into an image." );
typedef ImageContainerBySTLVector< Domain, int> Image;
Image image = VolReader<Image>::importVol(inputFilename);
typedef functors::SimpleThresholdForegroundPredicate<Image> DigitalObject;
DigitalObject digitalObject( image, threshold );
trace.endBlock();
//! [polyhedralizer-readVol]
//! [polyhedralizer-KSpace]
trace.beginBlock( "Construct the Khalimsky space from the image domain." );
KSpace ks;
bool space_ok = ks.init( image.domain().lowerBound(), image.domain().upperBound(), true );
if (!space_ok)
{
trace.error() << "Error in the Khamisky space construction."<<endl;
return 2;
}
trace.endBlock();
//! [polyhedralizer-KSpace]
//! [polyhedralizer-SurfelAdjacency]
typedef SurfelAdjacency<KSpace::dimension> MySurfelAdjacency;
MySurfelAdjacency surfAdj( false ); // exterior in all directions.
//! [polyhedralizer-SurfelAdjacency]
//! [polyhedralizer-ExtractingSurface]
trace.beginBlock( "Extracting boundary by tracking the surface. " );
typedef KSpace::Surfel Surfel;
Surfel start_surfel = Surfaces<KSpace>::findABel( ks, digitalObject, 100000 );
typedef ImplicitDigitalSurface< KSpace, DigitalObject > MyContainer;
typedef DigitalSurface< MyContainer > MyDigitalSurface;
typedef MyDigitalSurface::ConstIterator ConstIterator;
MyContainer container( ks, digitalObject, surfAdj, start_surfel );
MyDigitalSurface digSurf( container );
trace.info() << "Digital surface has " << digSurf.size() << " surfels."
<< endl;
trace.endBlock();
//! [polyhedralizer-ExtractingSurface]
//! [polyhedralizer-ComputingPlaneSize]
// First pass to find biggest planes.
trace.beginBlock( "Decomposition first pass. Computes all planes so as to sort vertices by the plane size." );
typedef BreadthFirstVisitor<MyDigitalSurface> Visitor;
typedef ChordGenericNaivePlaneComputer<Z3,Z3::Point, DGtal::int64_t> NaivePlaneComputer;
map<Surfel,unsigned int> v2size;
for ( ConstIterator it = digSurf.begin(), itE= digSurf.end(); it != itE; ++it )
v2size[ *it ] = 0;
int j = 0;
int nb = digSurf.size();
NaivePlaneComputer planeComputer;
vector<Point> layer;
vector<Surfel> layer_surfel;
for ( ConstIterator it = digSurf.begin(), itE= digSurf.end(); it != itE; ++it )
{
if ( ( (++j) % 50 == 0 ) || ( j == nb ) ) trace.progressBar( j, nb );
Surfel v = *it;
planeComputer.init( widthNum, widthDen );
// The visitor takes care of all the breadth-first traversal.
Visitor visitor( digSurf, v );
layer.clear();
layer_surfel.clear();
Visitor::Size currentSize = visitor.current().second;
while ( ! visitor.finished() )
{
Visitor::Node node = visitor.current();
v = node.first;
int axis = ks.sOrthDir( v );
Point p = ks.sCoords( ks.sDirectIncident( v, axis ) );
if ( node.second != currentSize )
{
bool isExtended = planeComputer.extend( layer.begin(), layer.end() );
if ( isExtended )
{
for ( vector<Surfel>::const_iterator it_layer = layer_surfel.begin(),
it_layer_end = layer_surfel.end(); it_layer != it_layer_end; ++it_layer )
{
++v2size[ *it_layer ];
}
layer_surfel.clear();
layer.clear();
currentSize = node.second;
}
else
break;
}
layer_surfel.push_back( v );
layer.push_back( p );
visitor.expand();
}
}
// Prepare queue
//.........这里部分代码省略.........