Back to Aurora Vision Library Lite website

You are here: Start » Geometry 2D » Geometry 2D Angle Metrics » AngleBetweenThreePoints

AngleBetweenThreePoints


Header: AVL.h
Namespace: avl

Measures the angle defined by three consecutive points.

Syntax

void avl::AngleBetweenThreePoints
(
	const avl::Point2D& inPoint1,
	const avl::Point2D& inPoint2,
	const avl::Point2D& inPoint3,
	avl::RotationDirection::Type inRotationDirection,
	atl::Optional<float&> outAbsoluteAngle = atl::NIL,
	atl::Optional<float&> outDirectedAngle = atl::NIL,
	atl::Optional<avl::Arc2D&> outArc = atl::NIL
)

Parameters

Name Type Default Description
Input value inPoint1 const Point2D& A point on one arm of an angle
Input value inPoint2 const Point2D& The middle point
Input value inPoint3 const Point2D& A point on another arm of the angle
Input value inRotationDirection RotationDirection::Type Chooses one of two ways of measuring the angle
Output value outAbsoluteAngle Optional<float&> NIL Angle value used for measurements <0; 360>
Output value outDirectedAngle Optional<float&> NIL Angle value used for clockwise transformations <-360; 360>
Output value outArc Optional<Arc2D&> NIL Angle visualization object

Optional Outputs

The computation of following outputs can be switched off by passing value atl::NIL to these parameters: outAbsoluteAngle, outDirectedAngle, outArc.

Read more about Optional Outputs.

Description

Note that because of inaccuracies of floating-point arithmetic, some geometric operations (including this one) may lead to unpredictable results for degenerated cases. In this filter such a case occurs when some two of the input points are almost equal.