first commit
This commit is contained in:
92
mod_progdump/development/quakec src/math.qc
Normal file
92
mod_progdump/development/quakec src/math.qc
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* math.qc
|
||||
*
|
||||
* Author: Joshua Skelton joshua.skelton@gmail.com
|
||||
*
|
||||
* A collection of helpful math functions.
|
||||
*/
|
||||
|
||||
// Forward declarations
|
||||
float(float value, float minValue, float maxValue) clamp;
|
||||
float(float a, float b) mod;
|
||||
float(float x) sign;
|
||||
float(float value, float minValue, float maxValue) wrap;
|
||||
|
||||
/*
|
||||
* clamp
|
||||
*
|
||||
* Limits the given value to the given range.
|
||||
*
|
||||
* value: A number
|
||||
*
|
||||
* minValue: The minimum value of the range
|
||||
*
|
||||
* maxValue: The maximum value of the range
|
||||
*
|
||||
* Returns: A number within the given range.
|
||||
*/
|
||||
float(float value, float minValue, float maxValue) clamp = {
|
||||
if (value < minValue) {
|
||||
return minValue;
|
||||
}
|
||||
else if (value > maxValue) {
|
||||
return maxValue;
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
/*
|
||||
* mod
|
||||
*
|
||||
* Returns the remainder after the division of a by n
|
||||
*
|
||||
* a: The dividend
|
||||
*
|
||||
* b: The divisor
|
||||
*
|
||||
* Returns: The remainder of a divided by n
|
||||
*/
|
||||
float(float a, float n) mod = {
|
||||
return a - (n * floor(a / n));
|
||||
};
|
||||
|
||||
/*
|
||||
* sign
|
||||
*
|
||||
* Returns an indication of the sign of the given number.
|
||||
*
|
||||
* x: A number
|
||||
*
|
||||
* Returns: -1 if x < 0, 0 if x == 0, 1 if x > 0.
|
||||
*/
|
||||
float(float x) sign = {
|
||||
if (x > 0) {
|
||||
return 1;
|
||||
}
|
||||
else if (x < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
/*
|
||||
* wrap
|
||||
*
|
||||
* Limits the given value to the given range and will wrap the value to the
|
||||
* the other end of the range if exceeded.
|
||||
*
|
||||
* value: A number
|
||||
*
|
||||
* minValue: The minimum value of the range
|
||||
*
|
||||
* maxValue: The maximum value of the range
|
||||
*
|
||||
* Returns: A number within the given range.
|
||||
*/
|
||||
float(float value, float minValue, float maxValue) wrap = {
|
||||
local float range = maxValue - minValue;
|
||||
|
||||
return mod(value - minValue, range + 1) + minValue;
|
||||
};
|
||||
Reference in New Issue
Block a user