Added testcases for intersections outputting points, disjoint segment/linestring, updated Doxygen file

[SVN r65256]
This commit is contained in:
Barend Gehrels 2010-09-04 15:28:27 +00:00
parent 7a082bb4f4
commit 2d141c7857
7 changed files with 82 additions and 12 deletions

View File

@ -25,13 +25,54 @@ MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8
# The aliases are shortcuts for Doxygen documentation.
# Within Boost.Geometry they are used in the top section, so for both
# Doxygen documentation and QuickBook documentation.
# They avoid repetations and make the documentation more structured.
# There are also qbk expressions, which might qbk defines and templates.
# There are sections for
# \brief* for various brief descriptions
# \tparam* for various template parameters
# \param* for various parameters
# \return* for various return cases
ALIASES = qbk{2}="\xmlonly <qbk.\1>\2</qbk.\1> \endxmlonly" \
qbk{3}="\xmlonly <qbk.\1>\2, \3</qbk.\1> \endxmlonly" \
geometry_concept="Any type fulfilling a Geometry concept" \
point_concept="Any type fulfilling a Point concept" \
geometry_model="A model of the specified concept" \
template_numerical="Numerical type (int, double, ttmath, ...)" \
strategy_reasons="Reasons to specify a strategy include: use another coordinate system for calculations; construct the strategy beforehand (e.g. with the radius of the Earth); select a strategy when there are more than one available for a calculation (e.g. distance over the Earth)"
brief_calc{1}="Calculates the \1 of a geometry" \
brief_calc2{1}="Calculate the \1 of two geometries" \
brief_calc2{2}="Calculate the \1 \2 two geometries" \
brief_check{1}="Checks if a geometry \1" \
brief_check2{1}="Checks if two geometries \1" \
brief_check12{1}="Checks if the first geometry \1 the second geometry" \
brief_strategy="using the specified strategy" \
tparam_geometry="Any type fulfilling a Geometry Concept" \
tparam_geometry{1}="A type fulfilling a \1 Concept" \
tparam_point="Any type fulfilling a Point Concept" \
tparam_box="Any type fulfilling a Box Concept" \
tparam_strategy{1}="Any type fulfilling a \1 Strategy Concept" \
tparam_numeric="Numerical type (int, double, ttmath, ...)" \
tparam_out{1}="A valid output iterator type, accepting geometries of \1 Concept" \
param_geometry="A model of the specified concept" \
param_box="A model of the specified Box Concept" \
param_point="A model of the specified Point Concept" \
param_strategy{1}="The strategy which will be used for \1 calculations" \
param_set{1}="which is set to the \1" \
param_out{1}="The output iterator, to which \1 geometries are feeded" \
details_calc{2}="The free function \1 calculates the \2 of a geometry" \
details_calc{1}="The free function \1 calculates the \1 of a geometry" \
details_calc2{2}="The free function \1 calculates the \2 of two geometries" \
details_calc2{1}="The free function \1 calculates the \1 of two geometries" \
details_default_strategy="It uses the default strategy, based on the coordinate system of the geometry." \
details_strategy_reasons="Reasons to specify a strategy include: use another coordinate system for calculations; construct the strategy beforehand (e.g. with the radius of the Earth); select a strategy when there are more than one available for a calculation (e.g. distance over the Earth)" \
details_make{1}="This version with the make_ prefix returns the \1, and a template parameter must therefore be specified in the call." \
details_inserter{1}="This version with the _inserter suffix outputs the \1 to an output iterator, and a template parameter must therefore be specified in the call." \
return_calc{1}="The calculated \1" \
return_check{1}="Returns true if the geometry \1" \
return_check2{1}="Returns true if two geometries \1" \
return_out="The output iterator" \
det_envelope="envelope (also known as axis aligned bounding box, aabb, or minimum bounding rectangle, mbr)" \
det_buffer="buffer (a polygon being the spatial point set collection within a specified maximum distance from a geometry)" \
p_l_or_c="Point, LineString or Polygon"
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO

View File

@ -0,0 +1,4 @@
/*!
\defgroup num_geometries number of geometries: calculate the number of geometries in a multi-geometry
*/

View File

@ -0,0 +1,5 @@
/*!
\defgroup num_interior_rings number of interior rings: calculate the number of interior rings
*/

View File

@ -0,0 +1,4 @@
/*!
\defgroup num_points number of points: calculate number of points of a geometry
*/

View File

@ -10,6 +10,9 @@
#define _DOXYGEN_MAINPAGE_HPP
// -> introduction.qbk
// -> quickstart.qbk
/*!
\mainpage Boost.Geometry
@ -23,12 +26,17 @@ Distributed under the Boost Software License, Version 1.0.\n
</em>
\section intro Introduction
Boost.Geometry, formally accepted by Boost, defines \ref concepts "concepts" for geometries and implements some algorithms on such geometries. Before acceptance by Boost it was known as GGL (Generic Geometry Library)
and this documentation still contains that name on various places.
Boost.Geometry, formally accepted by Boost, defines \ref concepts "concepts" for geometries and
implements some algorithms on such geometries. Before acceptance by Boost it was known as GGL
(Generic Geometry Library) and this documentation still contains that name on various places.
Boost.Geometry contains a dimension-agnostic, coordinate-system-agnostic and scalable kernel, based on concepts, meta-functions and tag- dispatching.
On top of that kernel, algorithms are built: area, length, perimeter, centroid, convex hull, intersection (clipping), within (point in polygon), distance, envelope (bounding box), simplify, transform, convert, and more. The library is also designed to support high precision arithmetic numbers, such as GMP.
Boost.Geometry contains a dimension-agnostic, coordinate-system-agnostic and
scalable kernel, based on concepts, meta-functions and tag- dispatching. On top
of that kernel, algorithms are built: area, length, perimeter, centroid, convex
hull, intersection (clipping), within (point in polygon), distance, envelope
(bounding box), simplify, transform, convert, and more. The library is also
designed to support high precision arithmetic numbers, such as GMP.
Boost.Geometry contains instantiable geometry classes, but library users can also use their own. Using registration macros or traits classes their geometries can be adapted to fulfil the Boost.Geometry Concepts.

View File

@ -27,7 +27,7 @@ void test_all()
typedef boost::geometry::linestring<P> linestring;
typedef boost::geometry::polygon<P> polygon;
typedef boost::geometry::box<P> box;
typedef test::custom_segment_of<P> segment;
typedef boost::geometry::model::segment<P> segment;
std::string clip = "box(2 2,8 8)";
@ -184,6 +184,15 @@ void test_all()
intersect_exterior_and_interiors_winded[0], intersect_exterior_and_interiors_winded[1],
1, 14, 25.2166667);
// linear
test_one<P, linestring, linestring>("llp1", "LINESTRING(0 0,1 1)", "LINESTRING(0 1,1 0)", 1, 1, 0);
test_one<P, segment, segment>("ssp1", "LINESTRING(0 0,1 1)", "LINESTRING(0 1,1 0)", 1, 1, 0);
test_one<P, linestring, linestring>("llp2", "LINESTRING(0 0,1 1)", "LINESTRING(0 0,2 2)", 2, 2, 0);
// polygons outputing points
//test_one<P, polygon, polygon>("ppp1", simplex_normal[0], simplex_normal[1], 1, 7, 5.47363293);
return;

View File

@ -1 +0,0 @@
// obsolete