I am attempting to use Boost Geometry with a custom vertex class that has x, y and many parameters for rendering such as texture coordinates. I registered the custom class using
BOOST_GEOMETRY_REGISTER_POINT_2D
and the algorithms such as union_
work but only x,y are valid. (I am a C++ veteran but have never learned generic programming.)
I can demonstrate the problem when I take an instance of my vertex and use
boost::geometry::append( boostPolygon, myVertex );
I can trace the append call in the debugger and I see that a default constructed instance of my vertex is being created and then the accessors of my vertex class are being called to copy the x, and y values leaving all the rest of the parameters as set in the default constructor.
What I really want is for boost::geometry::append()
to behave exactly like boostPolygon.outer().push_back( myVertex);
So I replaced the append
call with the above push_back
and it added the points to the polygon as I wanted but then when I called union_()
on the polygons they lost all the members other than x and y again.
I figure that what I want is a typical use-case so it is best to ask rather than guess how to handle this. I've seen the examples of how to adapt a class but my template kung-fu isn't enough to follow along. So do I need to add more adaption or is there something simple I need to do?