85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | #ifndef HX_MATH
 | ||
|  | #define HX_MATH
 | ||
|  | 
 | ||
|  | #ifndef HXCPP_H
 | ||
|  | #include <hxcpp.h>
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #include <cmath>
 | ||
|  | #include <stdlib.h>
 | ||
|  | 
 | ||
|  | class HXCPP_EXTERN_CLASS_ATTRIBUTES Math_obj : public hx::Object | ||
|  | { | ||
|  | public: | ||
|  |    HX_IS_INSTANCE_OF enum { _hx_ClassId = hx::clsIdMath }; | ||
|  | 
 | ||
|  |    typedef hx::Object super; | ||
|  |    typedef Math_obj OBJ_; | ||
|  |    HX_DO_RTTI; | ||
|  |    void __construct(); | ||
|  |    static Dynamic __CreateEmpty(); | ||
|  |    static void __boot(); | ||
|  | 
 | ||
|  |    inline static int floor(double inX) { return __int__(::std::floor(inX)); } | ||
|  |    inline static int ceil(double inX) { return __int__(::std::ceil(inX)); } | ||
|  |    inline static int round(double inX) { return floor(inX+0.5); } | ||
|  |    inline static double ffloor(double inX) { return ::std::floor(inX); } | ||
|  |    inline static double fceil(double inX) { return ::std::ceil(inX); } | ||
|  |    inline static double fround(double inX) { return ::std::floor(inX+0.5); } | ||
|  |    inline static double random() { return __hxcpp_drand(); } | ||
|  |    inline static double sqrt(double inX) { return ::std::sqrt(inX); } | ||
|  |    inline static double cos(double inX) { return ::std::cos(inX); } | ||
|  |    inline static double sin(double inX) { return ::std::sin(inX); } | ||
|  |    inline static double tan(double inX) { return ::std::tan(inX); } | ||
|  |    inline static double atan2(double inY,double inX) { return ::std::atan2(inY,inX); } | ||
|  |    inline static double abs(double inX) { return ::std::fabs(inX); } | ||
|  |    inline static double pow(double inA,double inB) { return ::std::pow(inA,inB); } | ||
|  |    inline static double log(double inA) { return ::std::log(inA); } | ||
|  |    inline static double max(double inA,double inB) { return inA>inB ? inA:inA==inA?inB:inA; } | ||
|  |    inline static double min(double inA,double inB) { return inA<inB ? inA:inA==inA?inB:inA; } | ||
|  | 
 | ||
|  |    inline static double atan(double inA) { return ::std::atan(inA); } | ||
|  |    inline static double asin(double inA) { return ::std::asin(inA); } | ||
|  |    inline static double acos(double inA) { return ::std::acos(inA); } | ||
|  |    inline static double exp(double inA) { return ::std::exp(inA); } | ||
|  | 
 | ||
|  | 
 | ||
|  |    static bool isNaN(double inX); | ||
|  |    static bool isFinite(double inX); | ||
|  | 
 | ||
|  | 
 | ||
|  |    static Dynamic floor_dyn(); | ||
|  |    static Dynamic ceil_dyn(); | ||
|  |    static Dynamic round_dyn(); | ||
|  |    static Dynamic ffloor_dyn(); | ||
|  |    static Dynamic fceil_dyn(); | ||
|  |    static Dynamic fround_dyn(); | ||
|  |    static Dynamic random_dyn(); | ||
|  |    static Dynamic sqrt_dyn(); | ||
|  |    static Dynamic cos_dyn(); | ||
|  |    static Dynamic sin_dyn(); | ||
|  |    static Dynamic tan_dyn(); | ||
|  |    static Dynamic atan2_dyn(); | ||
|  |    static Dynamic abs_dyn(); | ||
|  |    static Dynamic pow_dyn(); | ||
|  |    static Dynamic log_dyn(); | ||
|  |    static Dynamic min_dyn(); | ||
|  |    static Dynamic max_dyn(); | ||
|  |    static Dynamic atan_dyn(); | ||
|  |    static Dynamic asin_dyn(); | ||
|  |    static Dynamic acos_dyn(); | ||
|  |    static Dynamic exp_dyn(); | ||
|  |    static Dynamic isNaN_dyn(); | ||
|  |    static Dynamic isFinite_dyn(); | ||
|  | 
 | ||
|  |    static double NaN; | ||
|  |    static double PI; | ||
|  |    static double NEGATIVE_INFINITY; | ||
|  |    static double POSITIVE_INFINITY; | ||
|  | }; | ||
|  | 
 | ||
|  | typedef hx::ObjectPtr<Math_obj> Math; | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif
 |