Homepage Demos Overview Downloads Tutorials Reference
Credits

mathutils.h

Go to the documentation of this file.
00001 //-*-c++-*-
00002 #ifndef __mathutils_h__
00003 #define __mathutils_h__
00004 
00005 #include <math.h>
00006 
00007 namespace mathutils {
00008   template <class num>
00009   inline num squareDistance(num x1, num ya, num x2, num yb) {
00010     return (x1-x2)*(x1-x2)+(ya-yb)*(ya-yb);
00011   }
00012 
00013   template <class num>
00014   inline num distance(num x1, num ya, num x2, num yb) {
00015     return sqrt(squareDistance(x1, ya, x2, yb));
00016   }
00017 
00018   template <class num>
00019   inline num limitRange(num n, num low, num high) {
00020     if (n<low) n=low;
00021     if (n>high) n=high;
00022     return n;
00023   }
00024 
00025   template <class num>
00026   inline num squared(num n) {
00027     return n*n;
00028   }
00029 
00030   template <class num>
00031   inline num abs_t(num n) {
00032     return (n>-n)?n:-n;
00033   }
00034 
00035   template <class num>
00036   inline num log2t(num x) {
00037     num ans=0;
00038     for(unsigned int mag=sizeof(num)*4; mag>0; mag/=2) {
00039       num y=x>>mag;
00040       if(y>0) {
00041         x=y;
00042         ans+=mag;
00043       }
00044     }
00045     return ans;
00046   }
00047   template <>
00048   inline float log2t(float x) {
00049     return log(x)/M_LN2;
00050   }
00051   template <>
00052   inline double log2t(double x) {
00053     return log(x)/M_LN2;
00054   }
00055 }
00056 
00057 #endif

Tekkotsu v2.1
Generated Tue Mar 16 23:19:14 2004 by Doxygen 1.3.5