geos::geom::CircularArc Class Reference

`#include <CircularArc.h>`

## Public Types

using | CoordinateXY = geom::CoordinateXY

## Public Member Functions

| CircularArc (const CoordinateXY &q0, const CoordinateXY &q1, const CoordinateXY &q2)
int | orientation () const
const CoordinateXY & | getCenter () const
| Return the center point of the circle associated with this arc.
double | getRadius () const
| Return the radius of the circle associated with this arc.
bool | isCircle () const
| Return whether this arc forms a complete circle.
bool | isLinear () const
| Returns whether this arc forms a straight line (p0, p1, and p2 are collinear).
double | getAngle () const
| Return the inner angle of the sector associated with this arc.
double | getLength () const
| Return the length of the arc.
double | getArea () const
| Return the area enclosed by the arc p0-p1-p2 and the line segment p2-p0.
double | theta0 () const
| Return the angle of p0.
double | theta2 () const
| Return the angle of p2.
bool | containsPointOnCircle (const CoordinateXY &q) const
bool | containsPoint (const CoordinateXY &q)
bool | containsAngle (double theta) const
| Check to see if a given angle lies on this arc.
bool | isUpwardAtPoint (const CoordinateXY &q) const
Iterator | begin () const
Iterator | end () const

## Public Attributes

const CoordinateXY & | p0
const CoordinateXY & | p1
const CoordinateXY & | p2

## Detailed Description

A CircularArc is a reference to three points that define a circular arc. It provides for the lazy calculation of various arc properties such as the center, radius, and orientation

## Member Function Documentation

## containsPoint()

bool geos::geom::CircularArc::containsPoint | ( | const CoordinateXY & | q | ) |

inline

Check to see if a coordinate lies on the arc, after testing whether it lies on the circle.

References geos::geom::BOUNDARY, containsPointOnCircle(), getCenter(), getRadius(), and geos::triangulate::quadedge::TrianglePredicate::isInCircleNormalized().

## containsPointOnCircle()

bool geos::geom::CircularArc::containsPointOnCircle | ( | const CoordinateXY & | q | ) | const

inline

Check to see if a coordinate lies on the arc Only the angle is checked, so it is assumed that the point lies on the circle of which this arc is a part.

References containsAngle(), and getCenter().

Referenced by containsPoint().

## getAngle()

double geos::geom::CircularArc::getAngle | ( |  | ) | const

inline

Return the inner angle of the sector associated with this arc.

Even Rouault: potential optimization?: using crossproduct(p0 - center, p2 - center) = radius * radius * sin(angle) could yield the result by just doing a single asin(), instead of 2 atan2() actually one should also likely compute dotproduct(p0 - center, p2 - center) = radius * radius * cos(angle), and thus angle = atan2(crossproduct(p0 - center, p2 - center) , dotproduct(p0 - center, p2 - center) )

References isCircle(), orientation(), theta0(), and theta2().

Referenced by getArea(), and getLength().

## isUpwardAtPoint()

bool geos::geom::CircularArc::isUpwardAtPoint | ( | const CoordinateXY & | q | ) | const

inline

Return true if the arc is pointing positive in the y direction at the location of a specified point. The point is assumed to be on the arc.

References getCenter(), orientation(), and geos::geom::Quadrant::quadrant().

## orientation()

int geos::geom::CircularArc::orientation | ( |  | ) | const

inline

Return the orientation of the arc as one of:

- algorithm::Orientation::CLOCKWISE,
- algorithm::Orientation::COUNTERCLOCKWISE
- algorithm::Orientation::COLLINEAR

References geos::algorithm::Orientation::index().

Referenced by containsAngle(), getAngle(), and isUpwardAtPoint().

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

- CircularArc.h