mirror of https://github.com/CGAL/cgal
Introduced ApproximateUnbounded_2 concept
This commit is contained in:
parent
9a5280076a
commit
e20cfc56b5
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*! \ingroup PkgArrangementOnSurface2ConceptsTraits
|
||||||
|
* \cgalConcept
|
||||||
|
*
|
||||||
|
* The concept `AosApproximateUnboundedTraits_2` refines the concept
|
||||||
|
* `AosApproximateTraits_2`. A model of this concept is able to approximate a
|
||||||
|
* curve constrained to a given bounding box (in addition to the ability to
|
||||||
|
* approximate a point and a curve without constraints).
|
||||||
|
*
|
||||||
|
* \cgalRefines{AosApproximateTraits_2}
|
||||||
|
*
|
||||||
|
* \cgalHasModelsBegin
|
||||||
|
* \cgalHasModels{CGAL::Arr_linear_traits_2<Kernel>}
|
||||||
|
* \cgalHasModelsEnd
|
||||||
|
*
|
||||||
|
* \sa `AosApproximateTraits_2`
|
||||||
|
* \sa `draw()`
|
||||||
|
*/
|
||||||
|
class AosApproximateUnboundedTraits_2 {
|
||||||
|
public:
|
||||||
|
/// \name Types
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Functor Types
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/// models the concept `AosTraits::ApproximateUnbounded_2`.
|
||||||
|
typedef unspecified_type Approximate_2;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Accessing Functor Objects
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
///
|
||||||
|
Approximate_2 approximate_2_object() const;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
namespace AosTraits {
|
||||||
|
|
||||||
|
/*! \ingroup PkgArrangementOnSurface2ConceptsFunctionObjects
|
||||||
|
* \cgalConcept
|
||||||
|
*
|
||||||
|
* \cgalRefines{Approximate_2}
|
||||||
|
*
|
||||||
|
* \cgalHasModelsBegin
|
||||||
|
* \cgalHasModels{AosApproximatePointTraits_2::Approximate_2}
|
||||||
|
* \cgalHasModels{AosApproximateTraits_2::Approximate_2}
|
||||||
|
* \cgalHasModels{AosApproximateUnboundedTraits_2::Approximate_2}
|
||||||
|
* \cgalHasModelsEnd
|
||||||
|
*/
|
||||||
|
class ApproximateUnbounded_2 {
|
||||||
|
public:
|
||||||
|
/// \name Operations
|
||||||
|
/// A model of this concept must provide:
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*! approximates a given \f$x\f$-monotone curve constrained to a bounding
|
||||||
|
* box. It computes one or more sequences of approximate points that represent
|
||||||
|
* the disconnected portions of a polyline that approximates `xcv` within the
|
||||||
|
* bounding box `bbox`, and inserts them into output containers given through
|
||||||
|
* the output iterator `oi`. The first point of the first sequence and the
|
||||||
|
* last point of the last sequence are always approximations of the endpoints
|
||||||
|
* of the given curve.
|
||||||
|
*
|
||||||
|
* \param xcv The exact \f$x\f$-monotone curve.
|
||||||
|
* \param error The error bound of the polyline approximation. This is the
|
||||||
|
* Hausdorff distance between the curve and the polyline that
|
||||||
|
* approximates the curve.
|
||||||
|
* \param oi An output iterator for the output containers.
|
||||||
|
* \param bbox the bounding box.
|
||||||
|
* \param l2r A Boolean flag that indicates whether the curve direction is
|
||||||
|
* left to right.
|
||||||
|
* \return The past-the-end iterator of the output container.
|
||||||
|
*
|
||||||
|
* \pre Dereferencing `oi` must yield an object the type of which is a
|
||||||
|
* container, where the value type of this container is
|
||||||
|
* `AosApproximateTraits_2::Approximate_point_2`.
|
||||||
|
*/
|
||||||
|
template <typename OutputIterator>
|
||||||
|
OutputIterator operator()(const X_monotone_curve_2& xcv, double error, OutputIterator oi,
|
||||||
|
const BBox& bbox, bool l2r = true) const;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
}; /* end AosTraits::Approximate_2 */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -36,7 +36,7 @@ public:
|
||||||
* \return The past-the-end iterator of the output container.
|
* \return The past-the-end iterator of the output container.
|
||||||
*
|
*
|
||||||
* \pre Dereferencing `oi` must yield an object of type
|
* \pre Dereferencing `oi` must yield an object of type
|
||||||
* `Arr_conic_traits_2::Approximate_point_2`.
|
* `AosApproximateTraits_2::Approximate_point_2`.
|
||||||
*/
|
*/
|
||||||
template <typename OutputIterator>
|
template <typename OutputIterator>
|
||||||
OutputIterator operator()(const X_monotone_curve_2& xcv, double error,
|
OutputIterator operator()(const X_monotone_curve_2& xcv, double error,
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,7 @@ implemented as peripheral classes or as free (global) functions.
|
||||||
|
|
||||||
- `AosApproximateTraits_2`
|
- `AosApproximateTraits_2`
|
||||||
- `AosApproximatePointTraits_2`
|
- `AosApproximatePointTraits_2`
|
||||||
|
- `AosApproximateUnboundedTraits_2`
|
||||||
- `AosBasicTopologyTraits`
|
- `AosBasicTopologyTraits`
|
||||||
- `AosBasicTraits_2`
|
- `AosBasicTraits_2`
|
||||||
- `AosBottomSideTraits_2`
|
- `AosBottomSideTraits_2`
|
||||||
|
|
@ -168,6 +169,7 @@ implemented as peripheral classes or as free (global) functions.
|
||||||
|
|
||||||
- `AosTraits::Approximate_2`
|
- `AosTraits::Approximate_2`
|
||||||
- `AosTraits::ApproximatePoint_2`
|
- `AosTraits::ApproximatePoint_2`
|
||||||
|
- `AosTraits::ApproximateUnbounded_2`
|
||||||
- `AosTraits::AreMergeable_2`
|
- `AosTraits::AreMergeable_2`
|
||||||
- `AosTraits::CompareX_2`
|
- `AosTraits::CompareX_2`
|
||||||
- `AosTraits::CompareXy_2`
|
- `AosTraits::CompareXy_2`
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue