pref: 换用卡马克的快速开方求倒函数

虽然用的地方不是很多()
This commit is contained in:
bmy
2024-03-10 20:02:40 +08:00
parent c1e2b75aa5
commit ae70d9388e
5 changed files with 39 additions and 17 deletions

View File

@@ -1,15 +1,36 @@
#include "zf_common_headfile.h"
#include "gl_headfile.h"
int32_t limit(int32_t x, int32_t low, int32_t up)
{
return x > up ? up : x < low ? low : x;
return x > up ? up : x < low ? low
: x;
}
int clip(int x, int low, int up)
{
return x > up ? up : x < low ? low
: x;
}
int clip(int x, int low, int up) {
return x > up ? up : x < low ? low : x;
}
float fclip(float x, float low, float up) {
return x > up ? up : x < low ? low : x;
}
float fclip(float x, float low, float up)
{
return x > up ? up : x < low ? low
: x;
}
float Q_sqrt(float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = *(long *)&y; // evil floating point bit level hacking
i = 0x5f3759df - (i >> 1); // what the fuck?
y = *(float *)&i;
y = y * (threehalfs - (x2 * y * y)); // 1st iteration
y = y * (threehalfs - (x2 * y * y)); // 2nd iteration, this can be removed
return (1.0 / y);
}