
Geometry : 
Subject: [ggl] Physical and logical structure of geometry/strategies
From: Mateusz Loskot (mateusz)
Date: 20100313 19:20:57
Hi,
I'm having a little problem with finding pattern of structuring
and naming the algorithmic strategies.
The directories structure looks:
$ tree d boost/geometry/strategies/
strategies/
 agnostic
 cartesian
 concepts
 spherical
` transform
Inside, we have a few namespaces defined:
boost::geometry::strategy
boost::geometry::strategy::area
boost::geometry::strategy::buffer
boost::geometry::strategy::centroid_
boost::geometry::strategy::compare
boost::geometry::strategy::convex_hull
boost::geometry::strategy::distance
boost::geometry::strategy::intersection
boost::geometry::strategy::side
boost::geometry::strategy::simplify
boost::geometry::strategy::transform
boost::geometry::strategy::within
(BTW, why centroid_ has underscore suffix?)
Now, for example, taking definitions for area, we have:
1) concept for area strategy
boost::geometry::concept::AreaStrategy
2) trait that matching strategy with coordinate system
boost::geometry::strategy_area
3) metafunction used by the former to define numeric type of area
boost::geometry::area_result
4) concrete strategies
boost::geometry::strategy::area::by_triangles
boost::geometry::strategy::area::huiller
The physical structure of files is clear to me, but I have
a few questions to arrangement of namespaces and definitions:
1) Given the fact we have number of strategyspecific namespaces,
why the result metafunction doesn't sit in there?
For example: boost::geometry::area::result
2) Does the "strategy_" prefix usually denote strategy trait,
by convention of "strategy_<STRATEGY NAME>"?
If it does, why not boost::geometry::strategy::traits::area ?
3) I have an impression that the current logical structure
is to reserve namespace of boost::geometry::strategy::area
for concrete strategies only, but all tools used to generate
strategies like traits and metafunctions, sit on purpose in
namespace boost::geometry. Am I right?
If strategy_area and result_area can not be moved to dedicated
namespace, perhaps it would be a good idea to unify their names,
for example:
area_strategy
area_result
I have an impression of a bit of mess around strategies what makes
it difficult to track and understand. I think it could be better this
part is more modularized.
Perhaps the questions above are irrelevant and I'm confusing the idea,
So, I'd be thankful for explanation.
Best regards,
 Mateusz Loskot, http://mateusz.loskot.net Charter Member of OSGeo, http://osgeo.org
Geometry list run by mateusz at loskot.net