Boost logo

Boost :

Subject: Re: [boost] [Review] We're halfway through the GGL review
From: Fabio Fracassi (f.fracassi_at_[hidden])
Date: 2009-11-15 14:48:19


Barend Gehrels wrote:
> Hi Fabio,
>
> Thanks for your interest and for reviewing our library!
>
>
>>
>> polygon p1 = ...;
>> polygon p2 = ...;
>>
>> polygon_set ps1 = make_union(p1, p2);
>> polygon_set ps2;
>> intersection(ps1, p2, ps2);
> The polygon_set is implemented as a multi-polygon within GGL (and indeed
> you can call it polygon_set, if it fulfils the concept). We didn't merge
> the Multi* concepts into the generic algorithms, in other words, we
> don't require anyone to use a multi* (of course algorithms can be used
> for multi*).

Ok I read about multi* in the docu, but didn't make the connection.
I also find the ggl/multi/... includes somewhat surprising.

Maybe you can use them in one of the examples, to make things clearer.

>
> Therefore, union and intersection work with output iterators. So:
> union_inserter(p1, p2, std::back_inserter(ps1));

        
Hm, I tried:

        #include <boost/ggl/ggl.hpp>
        #include <boost/ggl/geometries/cartesian3d.hpp>
        #include <boost/ggl/multi/geometries/multi_polygon.hpp>
        #include <boost/ggl/algorithms/union.hpp>

        ...

        typedef multi_polygon<polygon_3d> polygon_set_3d;
        polygon_set_3d ps;
        
        polygon_3d poly1;
        polygon_3d poly2;
        
        union_inserter(poly1, poly2, std::back_inserter(ps));

but got this error:

  error: no matching function for call to
'union_inserter(ggl::polygon_3d&, ggl::polygon_3d&,
std::back_insert_iterator<ggl::multi_polygon<ggl::polygon<ggl::point<double,
3ul, ggl::cs::cartesian>, std::vector, std::vector, true,
std::allocator, std::allocator>, std::vector, std::allocator> >)'

Am I doing something wrong?

>
> It is possible that there will be a "intersection" and "union_" as well,
> detecting if ps1 is a multi-polygon and automatically inserting. But
> that is more a sort of synonym, similar way to do things.

Yes, I know just a bit of syntactic sugar, but IMO it makes the
interface much easier to use.
Besides I would probably not call it union_ but geometric_union or some
such, but thats just personal preference.

>
> The make_union would require an r-value and if C++0x is there, it can be
> implemented without copying the whole resultset. Indeed, it fits into
> the design and naming conventions.

Of course, still I like this syntax best, as it is most natural.

>
>> On the whole I am very pleased with the documentation, its easy to
>> read and reasonably complete.
>> I have a general problem with doxygen generated docu with regard to
>> generic libraries.[...]
> I understand. Several people have addressed this so we will certainly
> improve the documentation. Thanks for your structure proposal.
>

Fine, while I was further investigating ggl docu I found another wish:

For each class/function add a short usage example including all relevant
  includes (something short like the snipplet above)
This makes it immediately clear how things work together.

Regards,
Fabio


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk