|
GEOS 3.15.0dev
|
Utility functions for working with angles. More...
#include <Angle.h>
Static Public Member Functions | |
| static double | toDegrees (double radians) |
| static double | toRadians (double angleDegrees) |
| 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 | angle (const geom::CoordinateXY &p) |
| Returns the angle that the vector from (0,0) to p, relative to the positive X-axis. | |
| static bool | isAcute (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 | angleBetween (const geom::CoordinateXY &tip1, const geom::CoordinateXY &tail, const geom::CoordinateXY &tip2) |
| static double | angleBetweenOriented (const geom::CoordinateXY &tip1, const geom::CoordinateXY &tail, const geom::CoordinateXY &tip2) |
| static double | bisector (const geom::CoordinateXY &tip1, const geom::CoordinateXY &tail, const geom::CoordinateXY &tip2) |
| static double | interiorAngle (const geom::CoordinateXY &p0, const geom::CoordinateXY &p1, const geom::CoordinateXY &p2) |
| static int | getTurn (double ang1, double ang2) |
| Returns whether an angle must turn clockwise or counterclockwise to overlap another angle. | |
| static double | normalize (double angle) |
| Computes the normalized value of an angle, which is the equivalent angle in the range ( -Pi, Pi ]. | |
| static double | normalizePositive (double angle) |
| Computes the normalized positive value of an angle, which is the equivalent angle in the range [ 0, 2*Pi ). | |
| static bool | isWithinCCW (double angle, double from, double to) |
| 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. | |
| static geom::CoordinateXY | project (const geom::CoordinateXY &p, double angle, double dist) |
Utility functions for working with angles.
Unless otherwise noted, methods in this class express angles in radians.
|
static |
Returns the angle that the vector from (0,0) to p, relative to the positive X-axis.
The angle is normalized to be in the range ( -Pi, Pi ].
|
static |
Returns the angle of the vector from p0 to p1, relative to the positive X-axis.
The angle is normalized to be in the range [ -Pi, Pi ].
|
static |
Returns the unoriented smallest angle between two vectors.
The computed angle will be in the range [0, Pi).
| tip1 | the tip of one vector |
| tail | the tail of each vector |
| tip2 | the tip of the other vector |
|
static |
Returns the oriented smallest angle between two vectors.
The computed angle will be in the range (-Pi, Pi]. A positive result corresponds to a counterclockwise rotation from v1 to v2; a negative result corresponds to a clockwise rotation.
| tip1 | the tip of v1 |
| tail | the tail of each vector |
| tip2 | the tip of v2 |
|
static |
Computes the angle of the unoriented bisector of the smallest angle between two vectors. The computed angle will be in the range (-Pi, Pi]. Collinear inputs are handled.
| tip1 | the tip of v1 |
| tail | the tail of each vector |
| tip2 | the tip of v2 |
|
static |
Computes the unoriented smallest difference between two angles.
The angles are assumed to be normalized to the range [-Pi, Pi]. The result will be in the range [0, Pi].
| ang1 | the angle of one vector (in [-Pi, Pi] ) |
| ang2 | the angle of the other vector (in range [-Pi, Pi] ) |
|
static |
Returns whether an angle must turn clockwise or counterclockwise to overlap another angle.
| ang1 | an angle (in radians) |
| ang2 | an angle (in radians) |
|
static |
Computes the interior angle between two segments of a ring.
The ring is assumed to be oriented in a clockwise direction. The computed angle will be in the range [0, 2Pi]
| p0 | a point of the ring |
| p1 | the next point of the ring |
| p2 | the next point of the ring |
p1
|
static |
Tests whether the angle between p0-p1-p2 is acute.
An angle is acute if it is less than 90 degrees.
Note: this implementation is not precise (deterministic) for angles very close to 90 degrees.
| p0 | an endpoint of the angle |
| p1 | the base of the angle |
| p2 | the other endpoint of the angle |
|
static |
Tests whether the angle between p0-p1-p2 is obtuse.
An angle is obtuse if it is greater than 90 degrees.
Note: this implementation is not precise (deterministic) for angles very close to 90 degrees.
| p0 | an endpoint of the angle |
| p1 | the base of the angle |
| p2 | the other endpoint of the angle |
|
static |
Returns true if angle x is within the counterclockwise arc from angle a to angle b
| angle | angle to test |
| from | starting angle of arc |
| to | ending angle of arc |
angle is within [from, to]
|
static |
Computes the normalized value of an angle, which is the equivalent angle in the range ( -Pi, Pi ].
| angle | the angle to normalize |
|
static |
Computes the normalized positive value of an angle, which is the equivalent angle in the range [ 0, 2*Pi ).
E.g.:
| angle | the angle to normalize, in radians |
|
static |
Projects a point by a given angle and distance.
| p | the point to project |
| angle | the angle at which to project |
| dist | the distance to project |
|
inlinestatic |
Computes both sin and cos of an angle, snapping near-zero values to zero.
The angle does not need to be normalized. Unlike std::sin and std::cos, this method will snap near-zero values to zero for (e.g.) sin(pi) and cos(pi/2).
| ang | the input angle (in radians) |
| rSin | the result of sin(ang) |
| rCos | the result of cos(ang) |
|
static |
Converts from radians to degrees.
| radians | an angle in radians |
|
static |
Converts from degrees to radians.
| angleDegrees | an angle in degrees |