17#include <geos/export.h>
18#include <geos/geom/CircularArc.h>
22class GEOS_DLL CurveToLineParams {
27 m_maxStepDegrees(4.0),
28 m_maxDeviation(DoubleInfinity) {}
30 CurveToLineParams& setMaxStepDegrees(
double value) {
32 throw util::IllegalArgumentException(
"Step size must be positive");
35 m_maxStepDegrees = value;
40 CurveToLineParams& setMaxDeviation(
double value) {
42 throw util::IllegalArgumentException(
"Max deviation must be positive");
45 m_maxDeviation = value;
50 static CurveToLineParams maxDeviation(
double dev) {
51 return CurveToLineParams()
52 .setMaxStepDegrees(DoubleInfinity)
53 .setMaxDeviation(dev);
56 static CurveToLineParams stepSizeDegrees(
double stepSize) {
57 return CurveToLineParams()
58 .setMaxStepDegrees(stepSize)
59 .setMaxDeviation(DoubleInfinity);
62 double getStepSizeDegrees(
const geom::CircularArc& arc)
const {
63 const double deviationRatio = 1 - m_maxDeviation / arc.getRadius();
64 const double maxStepFromDeviation = deviationRatio < 0 ? 180 : std::acos(deviationRatio) * 360 / MATH_PI;
66 return std::min(m_maxStepDegrees, maxStepFromDeviation);
71 double m_maxStepDegrees;
72 double m_maxDeviation;
Contains classes and interfaces implementing fundamental computational geometry algorithms.
Definition Angle.h:32