
Sorry for the late response. I hope it's not too late yet... Caveat: my comments are based on a short look at the source code only, no thorough analysis. So the overall review is rather brief.
The formal review of the Boost.Polygon library by Lucanus Simonson starts today, August 24, 2009 and will finish September 2, 2009.
[snip]
Please always state in your review, whether you think the library should be accepted as a Boost library!
My vote: NO, at least not yet (see below).
Additionally please consider giving feedback on the following general topics:
- What is your evaluation of the design?
I'm concerned about whether the library is really sufficiently generic for the need of a multitude of users. Especially the fact of not being able to use arbitrary precision floating point types is a absolute show stopper for me. In my experience geometric stability is the main source of problems when dealing with real world GIS data. This isn't something solvable by being constrained to fixed integer types.
- What is your evaluation of the implementation?
I can't comment on that as I didn't look at the code, recently. The widespread usage of SFINAE seems to produce brittle results on today's compilers, though. But this is merely a hunch than a well founded argument. My real concern comes from the performance numbers presented by Barend showing Polygon to be more than 10 times slower than comparable geometry libraries. Luke gave some response to that. What I find somewhat non-satisfactory is that the numbers may be skewed by selecting a very particular field of highlighted algorithms (as pointed out by Luke). So I would like to see some numbers produced by Lucanus, allowing to get a better and more objective sense for how Polygon measures up if compared to others.
- What is your evaluation of the documentation?
I didn't read the whole of the documentation, just skimmed over it. It seems to be sufficient for users knowing the domain to get started.
- What is your evaluation of the potential usefulness of the library?
A geometry library would be a very important and valuable addition to Boost. Boost.Polygon might be a good library for certain domains, but I personally would like to see a more complete solution, especially in the field of GIS, added first. Polygon uses an very interesting and novel approach to calculating polygon intersections which might produce excellent results under certain circumstances (I don't know how generic this algorithm is), so I could see it as a specialization/drop-in in the context of a more generic library.
- Did you try to use the library? With what compiler? Did you have any problems?
No.
- How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
Quick reading, I glanced over the code.
- Are you knowledgeable about the problem domain?
Very. I've been working in GIS commercial software development for 15 years. Regards Hartmut