aboutsummaryrefslogtreecommitdiff
path: root/Client/Source/Phy2D/Common/Settings.h
blob: 87db16494fa89118db4d1e981684a5416f015bae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#pragma once

#include "libfixmath/libfixmath/fixmath.h"

namespace Phy2D
{

#define NUMBER_FLOAT false

#if NUMBER_FLOAT 
typedef float number;
#define NUMBER_MAX (FLT_MAX)
#define NUMBER_MIN (FLT_MIN)
#define SQRT(a) (sqrt((a)))
#define SIN(a) (sin((a)))
#define COS(a) (cos((a)))
#else 
// 同时一定要开启内联函数扩展,否则执行效率会非常低
typedef Fix16 number;
#define NUMBER_MAX (fix16_maximum)
#define NUMBER_MIN (fix16_minimum)
#define SQRT(a) ((a).sqrt())
#define SIN(a) ((a).sin())
#define COS(a) ((a).cos())
#endif

#if false
    typedef fix16_t number; 

#define A (a)
#define B (b)

    #define Number(float_value) (fix16_from_float((float_value)))
    #define to_float(n)         (fix16_to_float((n)))

    inline bool eq(number a, number b)	 { return  (A == B)           ;}
    inline bool lt(number a, number b)	 { return  (A < B)            ;}
    inline bool le(number a, number b)	 { return  (A <= B)           ;}
    inline bool gt(number a, number b)	 { return  (A > B)            ;}
    inline bool ge(number a, number b)	 { return  (A >= B)           ;}
    inline number add(number a, number b) { return (fix16_add(A, B))  ;}
    inline number sub(number a, number b) { return (fix16_sub(A, B))  ;}
    inline number mul(number a, number b) { return (fix16_mul(A, B))  ;}
    inline number div(number a, number b) { return (fix16_div(A, B))  ;}
    inline number mod(number a, number b) { return (fix16_mod(A, B))  ;}
    inline number sin(number a) 	 { return  (fix16_sin(A))     ;}
    inline number cos(number a) 	 { return  (fix16_cos(A))     ;}
    inline number tan(number a) 	 { return  (fix16_tan(A))     ;}
    inline number acos(number a) 	 { return  (fix16_acos(A))    ;}
    inline number asin(number a) 	 { return  (fix16_asin(A))    ;}
    inline number atan(number a) 	 { return  (fix16_atan(A))    ;}
    inline number neg(number a)    { return   (fix16_sub(0, A)) ;}
    inline number abs(number a)    { return   (fix16_abs(A))    ;}
    inline number sqrt(number a) { return fix16_sqrt(a); }
#endif

}