
Hervé Brönnimann wrote:
Dear Bernd: I started with a few quick notes (I really didn't do much more than glance at the documentation), which grew into a somewhat more extensive review - sorry, I've been thinking about geometric software library for a while now :)
I have many concerns/questions/suggestions with your library:
[...]
* naming: within_point_in_polygon is not a good name. I understand the desire to have all of them start with "within_" but is_point_within_polygon would read like English, at least. As Theo mentioned, having 2D somewhere in the name would also avoid deflated expectations from users.
My background in using geometry is 3D graphics. So I found some naming is a little strange too me, like "evelope", "within", "linestring"... IMO, "within_*" would be better is changes to "contain": template<typename POI, typename POL> bool contain(const POL& poly, const POI& pnt) I am still wondering if "evelope" is "Bounding Box" or "Hull", if "linestring" is "Poly Line" or "Line Strip".
* more algorithms and more implementations: you can find working code for many intersection / detection / distance computation in many books. Perhaps the most relevant for your purposes is the excellent "Geometric Tools for Computer Graphics" by Philip Schneider & David Eberly (http://www.amazon.com/dp/1558605940? tag=softsurfergeomet&link_code=as3&creativeASIN=1558605940&creative=3734 89&camp=211189)
Yeah, this book is very good. Also, David Eberly has a library implemented almost all the geometry primitives and algorithm introduced in the book, it is worth to have a look: http://www.geometrictools.com/