00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "freVectorToPhaseAccessor.h"
00025
00026 namespace FREE
00027 {
00028 namespace Accessor
00029 {
00030
00031 template <class TVector>
00032 typename VectorToPhaseAccessor<TVector>::ExternalType
00033 VectorToPhaseAccessor<TVector>::
00034 Get( const InternalType & input ) const
00035 {
00036 if (input[1]==0) return 0.0;
00037
00038 InternalType normVector = input;
00039 normVector.Normalize();
00040
00041 ExternalType dAngle = acos(normVector[0]);
00042
00043
00044 if (normVector[1]<0) dAngle = (2*M_PI) - dAngle;
00045
00046 if (!m_bOutputAsRad) dAngle = 360*(dAngle/2*M_PI);
00047
00048 return dAngle;
00049 }
00050
00051 template <class TVector>
00052 VectorToPhaseAccessor<TVector>::
00053 VectorToPhaseAccessor()
00054 {
00055 m_bOutputAsRad = true;
00056 }
00057
00058 template <class TVector>
00059 VectorToPhaseAccessor<TVector>::
00060 ~VectorToPhaseAccessor()
00061 {
00062 }
00063
00064 }
00065 }