aboutsummaryrefslogtreecommitdiff
path: root/Client/Source/Phy2D/Common/Settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Source/Phy2D/Common/Settings.h')
-rw-r--r--Client/Source/Phy2D/Common/Settings.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/Client/Source/Phy2D/Common/Settings.h b/Client/Source/Phy2D/Common/Settings.h
new file mode 100644
index 0000000..87db164
--- /dev/null
+++ b/Client/Source/Phy2D/Common/Settings.h
@@ -0,0 +1,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
+
+} \ No newline at end of file