From b04d5702719eca30a95d1db2a927b6605ebd3477 Mon Sep 17 00:00:00 2001 From: nathansmith117 Date: Mon, 10 Feb 2025 01:12:55 -0700 Subject: Some fast math stuff added --- include/libsldj/util.h | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'include/libsldj/util.h') diff --git a/include/libsldj/util.h b/include/libsldj/util.h index fd89d1c..2c8dff6 100644 --- a/include/libsldj/util.h +++ b/include/libsldj/util.h @@ -1,6 +1,7 @@ #include #include #include +#include #ifndef UTIL_H #define UTIL_H @@ -11,7 +12,17 @@ #define TOGGLE_BIT(b, n) (b ^ (0x1 << n)) #define HAS_FLAG(v, f) ((v & f) == f) -// Just the same color structure as the raylib name. +// Fast math macros. +#define SLDJ_SQRT(number) sldjSqrtTable[(uint16_t)(number)] + +#define SLDJ_SIN(number) sldjSinTable[(uint16_t)(number)] +#define SLDJ_COS(number) sldjCosTable[(uint16_t)(number)] +#define SLDJ_TAN(number) sldjTanTable[(uint16_t)(number)] + +#define SLDJ_HYPOT2(x, y) (SLDJ_SQRT(x * x + y * y)) +#define SLDJ_HYPOT3(x, y, z) (SLDJ_SQRT(x * x + y * y + z * z)) + +// Stuff stolen from raylib/raymath #ifndef RL_COLOR_TYPE #define RL_COLOR_TYPE typedef struct Color { @@ -22,6 +33,18 @@ typedef struct Color { } Color; #endif +#ifndef PI + #define PI 3.14159265358979323846f +#endif + +#ifndef DEG2RAD + #define DEG2RAD (PI/180.0f) +#endif + +#ifndef RAD2DEG + #define RAD2DEG (180.0f/PI) +#endif + // Used for sending information to a scanner. typedef struct SldjContext { uint16_t viewportWidth; @@ -31,5 +54,12 @@ typedef struct SldjContext { uint16_t yCount; } SldjContext; +// Tables. +extern float sldjSqrtTable[65536]; + +extern float sldjSinTable[65536]; +extern float sldjCosTable[65536]; +extern float sldjTanTable[65536]; + #endif -- cgit v1.2.3