pref: 换用卡马克的快速开方求倒函数
虽然用的地方不是很多()
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user