Homepage Demos Overview Downloads Tutorials Reference
Credits

Measures.cc

Go to the documentation of this file.
00001 #include "Measures.h"
00002 
00003 namespace DualCoding {
00004 
00005 AngPi::AngPi(orientation_t const &v) : value(v) {
00006   // Do cheap tests first; use fmod only if necessary.
00007   if ( value < 0 ) 
00008     value += Pi;
00009   else if ( value >= Pi)
00010     value -= Pi;
00011   else return;
00012   // If we're still out of range, give up and call fmod.
00013   if ( value < 0 || value >= Pi) {
00014     value = fmod(value,Pi);
00015     if ( value < 0 ) 
00016       value += Pi;
00017   };
00018 }
00019 
00020          
00021 AngPi angdist(AngPi const &arg1, AngPi const &arg2) {
00022   AngPi diff = arg1.value - arg2.value;
00023   if ( diff > Pi/2 )
00024     diff = Pi - diff;
00025   return diff;
00026 }
00027 
00028 AngTwoPi::AngTwoPi(direction_t const &v) : value(v) {
00029   // Do cheap tests first; use fmod only if necessary.
00030   if ( value < 0 ) 
00031     value += TwoPi;
00032   else if ( value >= TwoPi)
00033     value -= TwoPi;
00034   else return;
00035   // If we're still out of range, give up and call fmod.
00036   if ( value < 0 || value >= TwoPi) {
00037     value = fmod(value,TwoPi);
00038     if ( value < 0 ) 
00039       value += TwoPi;
00040   };
00041 }        
00042 
00043 AngPi angdist(AngTwoPi const &arg1, AngTwoPi const &arg2) {
00044   AngTwoPi diff = arg1.value - arg2.value;
00045   if ( diff > Pi )
00046     diff = TwoPi - diff;
00047   return AngPi(diff);
00048 }
00049 
00050 AngSignPi::AngSignPi(direction_t const &v) : value(v) {
00051   // Do cheap tests first; use fmod only if necessary.
00052   if ( value < -Pi ) 
00053     value += TwoPi;
00054   else if ( value > Pi)
00055     value -= TwoPi;
00056   else return;
00057   // If we're still out of range, give up and call fmod.
00058   if ( value < -Pi || value > Pi) {
00059     value = fmod(value,TwoPi);
00060     if (value < -Pi) 
00061       value += TwoPi;
00062   };
00063 }        
00064 
00065 AngPi angdist(AngSignPi const &arg1, AngSignPi const &arg2) {
00066   AngSignPi diff = arg1.value - arg2.value;
00067   if ( diff > Pi )
00068     diff = TwoPi - diff;
00069   return AngPi(diff);
00070 }
00071 
00072 } // namespace

DualCoding 3.0beta
Generated Wed Oct 4 00:01:53 2006 by Doxygen 1.4.7