21 #include <geos/export.h>
22 #include <geos/algorithm/Orientation.h>
41 static constexpr
double PI_TIMES_2 = 2.0 * MATH_PI;
42 static constexpr
double PI_OVER_2 = MATH_PI / 2.0;
43 static constexpr
double PI_OVER_4 = MATH_PI / 4.0;
46 static const int COUNTERCLOCKWISE = Orientation::COUNTERCLOCKWISE;
49 static const int CLOCKWISE = Orientation::CLOCKWISE;
52 static const int NONE = Orientation::COLLINEAR;
77 static double angle(
const geom::CoordinateXY& p0,
78 const geom::CoordinateXY& p1);
89 static double angle(
const geom::CoordinateXY& p);
102 static bool isAcute(
const geom::CoordinateXY& p0,
103 const geom::CoordinateXY& p1,
104 const geom::CoordinateXY& p2);
118 const geom::CoordinateXY& p1,
119 const geom::CoordinateXY& p2);
131 const geom::CoordinateXY& tail,
132 const geom::CoordinateXY& tip2);
147 const geom::CoordinateXY& tail,
148 const geom::CoordinateXY& tip2);
164 const geom::CoordinateXY& p1,
165 const geom::CoordinateXY& p2);
218 static double diff(
double ang1,
double ang2);
232 static inline void sinCosSnap(
const double ang,
double& rSin,
double& rCos) {
234 rSin = std::sin(ang);
235 rCos = std::cos(ang);
237 if (std::fabs(rSin) < 5e-16) rSin = 0.0;
238 if (std::fabs(rCos) < 5e-16) rCos = 0.0;
Utility functions for working with angles.
Definition: Angle.h:38
static double angle(const geom::CoordinateXY &p)
Returns the angle that the vector from (0,0) to p, relative to the positive X-axis.
static double diff(double ang1, double ang2)
static void sinCosSnap(const double ang, double &rSin, double &rCos)
Computes both sin and cos of an angle, snapping near-zero values to zero.
Definition: Angle.h:232
static double angleBetween(const geom::CoordinateXY &tip1, const geom::CoordinateXY &tail, const geom::CoordinateXY &tip2)
static int getTurn(double ang1, double ang2)
Returns whether an angle must turn clockwise or counterclockwise to overlap another angle.
static double interiorAngle(const geom::CoordinateXY &p0, const geom::CoordinateXY &p1, const geom::CoordinateXY &p2)
static bool isObtuse(const geom::CoordinateXY &p0, const geom::CoordinateXY &p1, const geom::CoordinateXY &p2)
static double toDegrees(double radians)
static double angle(const geom::CoordinateXY &p0, const geom::CoordinateXY &p1)
Returns the angle of the vector from p0 to p1, relative to the positive X-axis.
static double normalizePositive(double angle)
Computes the normalized positive value of an angle, which is the equivalent angle in the range [ 0,...
static double normalize(double angle)
Computes the normalized value of an angle, which is the equivalent angle in the range ( -Pi,...
static bool isAcute(const geom::CoordinateXY &p0, const geom::CoordinateXY &p1, const geom::CoordinateXY &p2)
static double toRadians(double angleDegrees)
static double angleBetweenOriented(const geom::CoordinateXY &tip1, const geom::CoordinateXY &tail, const geom::CoordinateXY &tip2)
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:217
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25