NITE 1.4.1 - API Reference
|
00001 /******************************************************************************* 00002 * * 00003 * PrimeSense NITE 1.3 * 00004 * Copyright (C) 2010 PrimeSense Ltd. * 00005 * * 00006 *******************************************************************************/ 00007 00008 00009 #ifndef _XNV_MATH_COMMON_H_ 00010 #define _XNV_MATH_COMMON_H_ 00011 00012 #include <math.h> 00013 #include <XnOS.h> 00014 00015 namespace XnVMathCommon 00016 { 00017 00018 inline void Exchange(XnFloat& a, XnFloat& b) 00019 { 00020 XnFloat c = a; 00021 a = b; 00022 b = c; 00023 } 00024 00025 inline void ExchangeSort(XnFloat& a, XnFloat& b) 00026 { 00027 if (a > b) 00028 Exchange(a, b); 00029 } 00030 00031 inline void ExchangeSort(XnFloat& a, XnFloat& b, XnFloat& c) 00032 { 00033 if (a > b) 00034 Exchange(a, b); 00035 if (b > c) 00036 Exchange(b, c); 00037 if (a > b) 00038 Exchange(a, b); 00039 } 00040 00041 inline XnFloat Sqr(XnFloat a) 00042 { 00043 return a*a; 00044 } 00045 00046 inline XnFloat Max(XnFloat a, XnFloat b) 00047 { 00048 return (a > b ? a : b); 00049 } 00050 00051 inline XnFloat Min(XnFloat a, XnFloat b) 00052 { 00053 return (a < b ? a : b); 00054 } 00055 00056 inline XnFloat MaxAbs(XnFloat a, XnFloat b) 00057 { 00058 return Max(fabs(a), fabs(b)); 00059 } 00060 00061 inline XnFloat MinAbs(XnFloat a, XnFloat b) 00062 { 00063 return Min(fabs(a), fabs(b)); 00064 } 00065 00066 inline XnUInt16 ArgMax(XnFloat a, XnFloat b) 00067 { 00068 return (a > b ? 0 : 1); 00069 } 00070 00071 inline XnUInt16 ArgMax(XnFloat a, XnFloat b, XnFloat c) 00072 { 00073 return (a > b ? (a > c ? 0 : 2) : (b > c ? 1 : 2)); 00074 } 00075 00076 inline XnUInt16 ArgMin(XnFloat a, XnFloat b) 00077 { 00078 return ArgMax(-a, -b); 00079 } 00080 00081 inline XnUInt16 ArgMin(XnFloat a, XnFloat b, XnFloat c) 00082 { 00083 return ArgMax(-a, -b, -c); 00084 } 00085 00086 const XnFloat PI=3.14159265f; 00087 const XnFloat HALF_PI=(PI/2); 00088 00089 inline XnBool IsZero(XnFloat f, XnFloat fTolerance) 00090 { 00091 return fabs(f) < fTolerance; 00092 } 00093 00094 } 00095 #endif //_XNV_MATH_COMMON_H_