GEOS 3.14.0dev
Public Member Functions | Static Public Member Functions | List of all members
geos::operation::buffer::BufferInputLineSimplifier Class Reference

Simplifies a buffer input line to remove concavities with shallow depth. More...

#include <BufferInputLineSimplifier.h>

Public Member Functions

 BufferInputLineSimplifier (const geom::CoordinateSequence &input)
 
std::unique_ptr< geom::CoordinateSequencesimplify (double distanceTol)
 

Static Public Member Functions

static std::unique_ptr< geom::CoordinateSequencesimplify (const geom::CoordinateSequence &inputLine, double distanceTol)
 

Detailed Description

Simplifies a buffer input line to remove concavities with shallow depth.

The most important benefit of doing this is to reduce the number of points and the complexity of shape which will be buffered. It also reduces the risk of gores created by the quantized fillet arcs (although this issue should be eliminated in any case by the offset curve generation logic).

A key aspect of the simplification is that it affects inside (concave or inward) corners only. Convex (outward) corners are preserved, since they are required to ensure that the generated buffer curve lies at the correct distance from the input geometry.

Another important heuristic used is that the end segments of the input are never simplified. This ensures that the client buffer code is able to generate end caps faithfully.

No attempt is made to avoid self-intersections in the output. This is acceptable for use for generating a buffer offset curve, since the buffer algorithm is insensitive to invalid polygonal geometry. However, this means that this algorithm cannot be used as a general-purpose polygon simplification technique.

Author
Martin Davis

Member Function Documentation

◆ simplify() [1/2]

static std::unique_ptr< geom::CoordinateSequence > geos::operation::buffer::BufferInputLineSimplifier::simplify ( const geom::CoordinateSequence inputLine,
double  distanceTol 
)
static

Simplify the input coordinate list.

If the distance tolerance is positive, concavities on the LEFT side of the line are simplified. If the supplied distance tolerance is negative, concavities on the RIGHT side of the line are simplified.

Parameters
inputLinethe coordinate sequence to simplify
distanceTolsimplification distance tolerance to use
Returns
a simplified version of the coordinate sequence

◆ simplify() [2/2]

std::unique_ptr< geom::CoordinateSequence > geos::operation::buffer::BufferInputLineSimplifier::simplify ( double  distanceTol)

Simplify the input coordinate list. If the distance tolerance is positive, concavities on the LEFT side of the line are simplified. If the supplied distance tolerance is negative, concavities on the RIGHT side of the line are simplified.

Parameters
distanceTolsimplification distance tolerance to use
Returns
the simplified coordinate list

The documentation for this class was generated from the following file: