vee_math.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 
00003 /* COPYRIGHT
00004  *
00005  * This file is part of the Visual Effects Engine - VEE
00006  *
00007  * Read the "VEE-LICENSE" file for the license.
00008  *
00009  * Authors & Copyright:   
00010  *
00011  * Tommi Ilmonen, Tuukka Heikura, Marko Myllymaa and 
00012  * Janne Kontkanen 2001-2004
00013  *
00014  * Additional copyrights: Tekes 2003-2004
00015  *
00016  * firstname.lastname@hut.fi
00017  *
00018  */
00019 
00020 #ifndef VEE_MATH_H
00021 #define VEE_MATH_H
00022 
00023 template <class T>
00024 inline T VEE_abs(T x1)
00025 {
00026   return (x1 < 0) ? -x1 : x1;
00027 }
00028 
00029 template <class T>
00030 inline T VEE_min(T x1, T x2)
00031 {
00032   return (x1 < x2) ? x1 : x2;
00033 }
00034 
00035 template <class T>
00036 inline T VEE_max(T x1, T x2)
00037 {
00038   return (x1 > x2) ? x1 : x2;
00039 }
00040 
00041 template <class T>
00042 inline T VEE_min(T x1, T x2, T x3)
00043 {
00044   T x = x1 < x2 ? x1 : x2;
00045   return x < x3 ? x : x3;
00046 }
00047 
00048 template <class T>
00049 inline T VEE_max(T x1, T x2, T x3)
00050 {
00051   T x = x1 > x2 ? x1 : x2;
00052   return x > x3 ? x : x3;
00053 }
00054 
00055 template <class T>
00056 inline T VEE_clamp(T v, T vmin, T vmax)
00057 {
00058   if(v < vmin) return vmin;
00059   if(v > vmax) return vmax;
00060   return v;
00061 }
00062 
00063 template <class T>
00064 inline T VEE_absClamp(T v, T vmin, T vmax)
00065 {
00066   if(VEE_abs(v) < vmin) return v > (T) 0 ? vmin : -vmin;
00067   if(VEE_abs(v) > vmax) return v > (T) 0 ? vmax : -vmax;
00068   return v;
00069 }
00070 
00071 template <class T>
00072 inline int VEE_round(T v)
00073 {
00074   if(v < 0) return (int) (v - 0.5);
00075   return (int) (v + 0.5);
00076 }
00077 
00078 template <class T>
00079 inline int VEE_floor(T v)
00080 {
00081   if(v < 0) return (int) (v - (T) 0.999999);
00082   return (int) v;
00083 }
00084 
00085 template <class T>
00086 inline int VEE_ceil(T v)
00087 {
00088   if(v > 0) return (int) (v + (T) 0.999999);
00089   return (int) v;
00090 }
00091 
00092 
00093 #define VEE_PI 3.1415926535897931
00094 #define VEE_TWO_PI 6.2831853071795862
00095 #define VEE_HALF_PI 1.57079632679489660
00096 #define VEE_QUARTER_PI 0.78539816339744828
00097 
00098 template <class T>
00099 T VEE_deg2rad(T v) { return v / (T) 360 * (T) VEE_TWO_PI; }
00100 
00101 template <class T>
00102 T VEE_rad2deg(T v) { return v / (T) VEE_TWO_PI * (T) 360.0; }
00103 
00104 template <class T>
00105 T VEE_checkRadianRange(T v) 
00106 { 
00107   if(v > (T) VEE_TWO_PI)
00108     return v - VEE_TWO_PI;
00109   if(v < (T) -VEE_TWO_PI)
00110     return v + VEE_TWO_PI;
00111   
00112   return v;
00113 }
00114 
00115 #endif

Generated on Mon Mar 12 21:09:00 2007 for VEE - The Visual Effects Engine by  doxygen 1.4.6