AndroMeta  2.0.0
AndroMeta/include/AndroMeta/MMath.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2009-2012 AndroMeta LLC. All rights reserved.
00003  *
00004  * AndroMeta LLC retains all intellectual property and proprietary 
00005  * rights to this software and related documentation and any modifications 
00006  * thereto.  Any use, reproduction, disclosure, or distribution of this 
00007  * software and related documentation without an express license agreement 
00008  * from AndroMeta LLC is strictly prohibited.
00009  * 
00010  */
00011 
00018 #ifndef ANDROMETA_M_MATH_H
00019 #define ANDROMETA_M_MATH_H
00020 
00021 #include <AndroMeta/MNode.h>
00022 #include <AndroMeta/MVar.h>
00023 
00024 namespace Meta{
00025   
00026   class MObject;
00027   
00039   class MMath{
00040   public:
00041     
00045     static mnode degrees(const mvar& deg, MObject* obj=0);
00046     
00050     static mnode pi(MObject* obj=0);
00051     
00055     static mnode euler(MObject* obj=0);
00056     
00060     static mnode catalan(MObject* obj=0);
00061     
00065     static mnode sqrt(const mvar& v, MObject* obj=0);
00066     
00070     static mnode pow(const mvar& v, const mvar& exponent, MObject* obj=0);
00071     
00075     static mnode exp(const mvar& v, MObject* obj=0);
00076     
00080     static mvar abs(const mvar& v);
00081     
00085     static mnode log10(const mvar& v, MObject* obj=0);
00086     
00090     static mnode log(const mvar& v, MObject* obj);
00091     
00095     static mnode cos(const mvar& v, MObject* obj=0);
00096     
00100     static mnode acos(const mvar& v, MObject* obj=0);
00101     
00105     static mnode cosh(const mvar& v, MObject* obj=0);
00106     
00110     static mnode sin(const mvar& v, MObject* obj=0);
00111     
00115     static mnode asin(const mvar& v, MObject* obj=0);
00116     
00120     static mnode sinh(const mvar& v, MObject* obj=0);
00121     
00125     static mnode tan(const mvar& v, MObject* obj=0);
00126 
00130     static mnode cot(const mvar& v, MObject* obj=0);
00131     
00135     static mnode acot(const mvar& v, MObject* obj=0);
00136     
00140     static mnode atan(const mvar& v, MObject* obj=0);
00141     
00145     static mnode atan2(const mvar& y, const mvar& x, MObject* obj=0);
00146     
00150     static mnode tanh(const mvar& v, MObject* obj=0);
00151 
00155     static mnode sec(const mvar& v, MObject* obj=0);
00156 
00160     static mnode csc(const mvar& v, MObject* obj=0);
00161     
00165     static mnode sech(const mvar& v, MObject* obj=0);
00166     
00170     static mnode csch(const mvar& v, MObject* obj=0);
00171     
00175     static mnode asec(const mvar& v, MObject* obj=0);
00176     
00180     static mnode acsc(const mvar& v, MObject* obj=0);
00181     
00185     static mnode asech(const mvar& v, MObject* obj=0);
00186     
00190     static mnode acsch(const mvar& v, MObject* obj=0);
00191     
00195     static mnode coth(const mvar& v, MObject* obj=0);
00196 
00200     static mnode acoth(const mvar& v, MObject* obj=0);
00201 
00205     static mnode atanh(const mvar& v, MObject* obj=0);
00206     
00210     static mnode asinh(const mvar& v, MObject* obj=0);
00211     
00215     static mnode acosh(const mvar& v, MObject* obj=0);
00216     
00220     static mvar floor(const mvar& v);
00221     
00225     static mvar ceil(const mvar& v);
00226     
00231     static mvar round(const mvar& v, double precision=1);
00232     
00238     static bool nearInteger(double v, mvar& n);
00239     
00244     static mnode distance(const mvar& u, const mvar& v, MObject* obj=0);
00245     
00249     static double fastDistance(const mvar& u, const mvar& v);
00250     
00254     static mvar scaleVector(const mvar& u, double magnitude);
00255     
00260     static mvec vectorRange(const mvar& b){
00261       return vectorRange(0, b, 1);
00262     }
00263     
00268     static mvec vectorRange(const mvar& a, const mvar& b){
00269       return vectorRange(a, b, 1);
00270     }
00271     
00276     static mvec vectorRange(const mvar& a, const mvar& b, const mvar& inc);
00277     
00282     static mlist listRange(const mvar& b){
00283       return listRange(0, b, 1);
00284     }
00285     
00290     static mlist listRange(const mvar& a, const mvar& b){
00291       return listRange(a, b, 1);
00292     }
00293     
00298     static mlist listRange(const mvar& a, const mvar& b, const mvar& inc);
00299     
00307     static mvar clamp(const mvar& v, const mvar& min, const mvar& max);
00308   };
00309   
00310 } // end namespace Meta
00311 
00312 #endif // ANDROMETA_M_MATH_H