Boost logo

Boost Users :

From: Eli Pulsifer (Eli_at_[hidden])
Date: 2004-12-15 17:16:54


Hello,
 
I have a situation which is probably quite common and already addressed
by boost.
So rather than write it my self, maybe someone can point me to the
answer.
 
I've got a geometry class that needs to expose iterators for the
underling vertex components.
Example:
 
Class Vertex
{
            positions_iterator PositionsBegin();
            positions_iterator PositionsEnd();
            normals_iterator NormalsBegin();
            normals _iterator NormalsEnd();
            ...
}
 
The first problem is depending on the format of the underling vertices,
the stride between the data elements will change.
Is there some easy way to implement this?
 
I think writing my own using the boost::iterator_adapter is probably the
way to go.
 
Second problem is more involved.
 
The texture data not only has a stride but a variable number of
elements.
Some vertices have 2 texture coordinates, some 3, some even more.
 
Id love to define this iterator like this:
stride_iterator< pair<float_iterator, float_iterator> >
tex_coord_iterator;
 
then create the iterator:
 
stride_tupel_iterator< pair<float_iterator, float_iterator> >(
pFirstTexCoord, texCoordStride, texCoordCount );
 
then use it:
 
stride_tupel_iterator< pair<float_iterator, float_iterator> > it;
 
for( it = vertex.PositionBegin() ; it != vertex.PositionEnd() ; ++it)
{
            pair<float_iterator, float_iterator> coords;
            float_iterator iCoord;
 
            for(iCoord = coords.first ; iCoord != coords.last ;
++iCoord)
{
}
}
 
This will probably also require me to create my own highly special
iterator class or is there a better way.
 
 



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net