Angular distance: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
Content added Content deleted
 (new page)  | 
				 (add general formula for vectors)  | 
				||
| Line 1: | Line 1: | ||
In general, the smallest angle (angular distance) between two vectors is given by:  | 
|||
<math>  | 
|||
a = \cos^{-1} \frac{A \cdot B}{\left | A \right | \cdot \left | B \right |}  | 
|||
</math>  | 
|||
(if <math>A</math> and <math>B</math> are unit/normalized, then this can be simplified further).  | 
|||
Given two angles <math>a_0</math> and <math>a_1</math>, you ''could'' substitute <math>A = \left [ \cos a_0, \sin a_0 \right ]</math> and <math>B = \left [ \cos a_1, \sin a_1 \right ]</math> above, or you could use the following code:  | 
|||
<source lang="C++">  | 
  <source lang="C++">  | 
||
// https://gamedev.stackexchange.com/a/4472  | 
  // https://gamedev.stackexchange.com/a/4472  | 
||
// a0 and a1 are in radians (always positive)  | 
|||
float delta_angle(float a0, float a1)  | 
  float delta_angle(float a0, float a1)  | 
||
{  | 
  {  | 
||
Latest revision as of 12:21, 21 April 2020
In general, the smallest angle (angular distance) between two vectors is given by:
(if and are unit/normalized, then this can be simplified further).
Given two angles and , you could substitute and above, or you could use the following code:
// https://gamedev.stackexchange.com/a/4472
// a0 and a1 are in radians (always positive)
float delta_angle(float a0, float a1)
{
    return M_PI - fabs(fabs(a1 - a0) - M_PI);
}