DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
EnMath.c
Go to the documentation of this file.
1
6class Math
7{
8 private void Math() {}
9 private void ~Math() {}
10
11 static const float EULER = 2.7182818284590452353;
12 static const float PI = 3.14159265358979;
13 static const float PI2 = 6.28318530717958;
14 static const float PI_HALF = 1.570796326794;
15
16 static const float RAD2DEG = 57.2957795130823208768;
17 static const float DEG2RAD = 0.01745329251994329577;
18
20 proto static int GetNumberOfSetBits(int i);
21
23 proto static int GetNthBitSet(int value, int n);
24
38 proto static int RandomInt(int min, int max);
39
53 static int RandomIntInclusive(int min, int max)
54 {
55 return Math.RandomInt(min, max+1);
56 }
57
71 proto static float RandomFloat(float min, float max);
72
86 static float RandomFloatInclusive(float min, float max)
87 {
88 int max_range = Math.Pow(2, 30); //max range
89 int random_int = Math.RandomInt(0, max_range);
90 float rand_float = (float)random_int / (float)max_range;
91 float range = max - min;
92
93 return min + (rand_float * range); //rand float
94 }
95
106 static float RandomFloat01()
107 {
108 return RandomFloatInclusive(0, 1);
109 }
110
121 proto static int Randomize(int seed);
122
135 proto static float NormalizeAngle(float ang);
136
150 proto static float DiffAngle(float angle1, float angle2);
151
163 proto static float Pow(float v, float power);
164
178 proto static float ModFloat(float x, float y);
179
193 proto static float RemainderFloat(float x, float y);
194
205 proto static float AbsFloat(float f);
206
217 proto static int AbsInt(int i);
218
233 proto static float SignFloat(float f);
234
249 proto static int SignInt(int i);
250
261 proto static float SqrFloat(float f);
262
273 proto static int SqrInt(int i);
274
285 proto static float Sqrt(float val);
286
299 proto static float Log2(float x);
300
311 proto static float Sin(float angle);
312
323 proto static float Cos(float angle);
324
335 proto static float Tan(float angle);
336
347 proto static float Asin(float s);
348
359 proto static float Acos(float c);
360
366 proto static float Atan(float x);
367
379 proto static float Atan2(float y, float x);
380
393 proto static float Round(float f);
394
407 proto static float Floor(float f);
408
421 proto static float Ceil(float f);
422
435 proto static float WrapFloat(float f, float min, float max);
436
449 proto static float WrapFloatInclusive(float f, float min, float max);
450
462 proto static float WrapFloat0X(float f, float max);
463
475 proto static float WrapFloat0XInclusive(float f, float max);
476
489 proto static int WrapInt(int i, int min, int max);
490
502 proto static int WrapInt0X(int i, int max);
503
520 proto static float Clamp(float value, float min, float max);
521
533 proto static float Min(float x, float y);
534
546 proto static float Max(float x, float y);
547
560 proto static bool IsInRange(float v, float min, float max);
561
574 proto static bool IsInRangeInt(int v, int min, int max);
575
588 proto static float Lerp(float a, float b, float time);
589
602 proto static float InverseLerp(float a, float b, float value);
603
610 proto static float AreaOfRightTriangle(float s, float a);
611
618 proto static float HypotenuseOfRightTriangle(float s, float a);
619
627 proto static bool IsPointInCircle(vector c, float r, vector p);
628
636 proto static bool IsPointInRectangle(vector mi, vector ma, vector p);
637
638 //--------------------------------------------------------------------------
639 //-------------------------------- filters ---------------------------------
640 //--------------------------------------------------------------------------
641
658 proto static float SmoothCD(float val, float target, inout float velocity[], float smoothTime, float maxVelocity, float dt);
659
661 static float Poisson(float mean, int occurences)
662 {
663 return Pow(mean, occurences) * Pow(EULER,-mean) / Factorial(occurences);
664 }
665
667 static int Factorial(int val)
668 {
669 if (val > 12)
670 {
671 ErrorEx("Values above '12' cause int overflow! Returning '1'");
672 return 1;
673 }
674
675 int res = 1;
676 while (val > 1)
677 {
678 res *= val--;
679 }
680 return res;
681 }
682};
683
684//@}
Icon x
Icon y
Definition EnMath.c:7
enum ShapeType ErrorEx
static proto float Acos(float c)
Returns angle in radians from cosinus.
static proto float DiffAngle(float angle1, float angle2)
Return relative difference between angles.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto bool IsPointInCircle(vector c, float r, vector p)
Returns if point is inside circle.
static int Factorial(int val)
values above '12' will cause int overflow
Definition EnMath.c:667
static proto float Atan(float x)
Returns angle in radians from tangent.
static proto float Cos(float angle)
Returns cosinus of angle in radians.
static proto float ModFloat(float x, float y)
Returns the floating-point remainder of x/y rounded towards zero.
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
static proto float HypotenuseOfRightTriangle(float s, float a)
Returns hypotenus of a right triangle.
static proto int Randomize(int seed)
Sets the seed for the random number generator.
static proto bool IsInRangeInt(int v, int min, int max)
Returns if value is between min and max (inclusive)
static proto int WrapInt(int i, int min, int max)
Returns wrap number to specified interval [min, max[.
static const float PI_HALF
Definition EnMath.c:14
static proto float Log2(float x)
Returns the binary (base-2) logarithm of x.
static proto float WrapFloat0X(float f, float max)
Returns wrap number to specified interval [0, max[.
static proto float Pow(float v, float power)
Return power of v ^ power.
private void ~Math()
Definition EnMath.c:9
static const float EULER
Definition EnMath.c:11
static proto float WrapFloatInclusive(float f, float min, float max)
Returns wrap number to specified interval [min, max].
static proto float Round(float f)
Returns mathematical round of value.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float SignFloat(float f)
Returns sign of given value.
static proto float Asin(float s)
Returns angle in radians from sinus.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
static proto int WrapInt0X(int i, int max)
Returns wrap number to specified interval [0, max[.
static proto bool IsInRange(float v, float min, float max)
Returns if value is between min and max (inclusive)
static proto float Tan(float angle)
Returns tangent of angle in radians.
static proto float Atan2(float y, float x)
Returns angle in radians from tangent.
static float RandomFloatInclusive(float min, float max)
Returns a random float number between and min [inclusive] and max [inclusive].
Definition EnMath.c:86
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Definition EnMath.c:53
static proto float SmoothCD(float val, float target, inout float velocity[], float smoothTime, float maxVelocity, float dt)
Does the CD smoothing function - easy in | easy out / S shaped smoothing.
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
static proto float SqrFloat(float f)
Returns squared value.
static proto int SignInt(int i)
Returns sign of given value.
static proto int GetNthBitSet(int value, int n)
returns the the index of n-th bit set in a bit mask counting from the right, for instance,...
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
Definition EnMath.c:106
static proto int SqrInt(int i)
Returns squared value.
static const float PI
Definition EnMath.c:12
static proto float Min(float x, float y)
Returns smaller of two given values.
static float Poisson(float mean, int occurences)
occurences values above '12' will cause Factorial to overflow int.
Definition EnMath.c:661
private void Math()
Definition EnMath.c:8
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float AbsFloat(float f)
Returns absolute value.
static proto float WrapFloat(float f, float min, float max)
Returns wrap number to specified interval [min, max[.
static const float PI2
Definition EnMath.c:13
static proto float NormalizeAngle(float ang)
Normalizes the angle (0...360)
static const float RAD2DEG
Definition EnMath.c:16
static proto int GetNumberOfSetBits(int i)
returns the number of bits set in a bitmask i
static const float DEG2RAD
Definition EnMath.c:17
static proto float Sin(float angle)
Returns sinus of angle in radians.
static proto float Ceil(float f)
Returns ceil of value.
static proto float WrapFloat0XInclusive(float f, float max)
Returns wrap number to specified interval [0, max].
static proto int AbsInt(int i)
Returns absolute value.
static proto float RemainderFloat(float x, float y)
Returns the floating-point remainder of x/y rounded to nearest.
static proto bool IsPointInRectangle(vector mi, vector ma, vector p)
Returns if point is inside rectangle.
static proto float Sqrt(float val)
Returns square root.
static proto float AreaOfRightTriangle(float s, float a)
Returns area of a right triangle.
static proto float Floor(float f)
Returns floor of value.