Calculate the Angle Between Two Vectors
Windows only
Demonstrates how to calculate the angle between two vectors.
// Description: Calculates the angle between two 3-D vectors.
// Parameters:
// v0 - [in] The first angle.
// v1 - [in] The second angle.
// reflex_angle - [out] The reflex angle.
// Returns: The angle in radians.
double ON_3dVectorAngle( ON_3dVector v0, ON_3dVector v1, double* reflex_angle = 0 )
{
// Unitize the input vectors
v0.Unitize();
v1.Unitize();
double dot = ON_DotProduct( v0, v1 );
// Force the dot product of the two input vectors to
// fall within the domain for inverse cosine, which
// is -1 <= x <= 1. This will prevent runtime
// "domain error" math exceptions.
dot = ( dot < -1.0 ? -1.0 : ( dot > 1.0 ? 1.0 : dot ) );
double angle = acos( dot );
if( reflex_angle )
*reflex_angle = (ON_PI * 2) - angle;
return angle;
}