[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: [Help-gsl] angle between two vectors

**From**: |
Liam Healy |

**Subject**: |
Re: [Help-gsl] angle between two vectors |

**Date**: |
Sun, 28 Mar 2010 12:35:19 -0400 |

I'm a big fan of atan2, but in this case there's no benefit to using it
because an angle between two vectors will always be less than or equal
to 180 degrees, so the quadrant is unambiguous from the cosine.
Dot product and cosine is the right way to go.
Liam
On Sun, Mar 28, 2010 at 11:11 AM, Jerome BENOIT <address@hidden> wrote:
>* Hello List,*
>
>* a better idea is to build some code around the atan2 function.*
>
>* Jerome*
>
>* John D Lamb wrote:*
>*>*
>*> On Sun, 2010-03-28 at 11:07 +0200, Jordi wrote:*
>*>>*
>*>> I am quite new to maths and gsl I would like to get the angle between two*
>*>> vectors.*
>*>*
>*> In C it should be something like the following. (You may have to check*
>*> where acos is defined, check norm_u * norm_v != 0; and you may want a*
>*> direction with the angle.) For floats use snrm and sdot instead of dnrm*
>*> and ddot.*
>*>*
>*> #include<gsl/gsl_blas.h>*
>*> …*
>*> gsl_vector* u, v;*
>*> double norm_u, norm_v, x, angle;*
>*> …*
>*> norm_u = gdl_blas_dnrm( u );*
>*> norm_v = gdl_blas_dnrm( v );*
>*> gsl_blas_ddot( u, v, &x );*
>*> angle = acos( x / (norm_u * norm_v ) );*
>*>*
>
>* --*
>* Jerome BENOIT*
>* jgmbenoit-at+rezozer*dot_net*