1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#ifndef PRB_MATH_H
#define PRB_MATH_H
/* NOTE(pryazha): Numeric */
#define F32PI 3.14159265359f
#define DEG2RAD F32PI/180.0f
#define RAD2DEG 182.0f/F32PI
F32 f32sin(F32 a);
F32 f32cos(F32 a);
F32 f32tan(F32 a);
F32 f32sqrt(F32 a);
/* NOTE(pryazha): Vectors */
V2 v2(F32 x, F32 y);
V2 v2a(F32 x);
V2 invv2(V2 a);
V2 addv2(V2 a, V2 b);
V2 subv2(V2 a, V2 b);
V2 scalefv2(V2 a, F32 s);
V2 scalev2(V2 a, V2 s);
F32 dotv2(V2 a, V2 b);
F32 len2v2(V2 a);
F32 lenv2(V2 a);
V2 normv2(V2 a);
void printv2(V2 a);
V3 v3(F32 x, F32 y, F32 z);
V3 v3a(F32 x);
V3 v3fromv2(V2 a);
V3 v3fromv4(V4 a);
V3 invv3(V3 a);
V3 addv3(V3 a, V3 b);
V3 subv3(V3 a, V3 b);
V3 scalefv3(V3 a, F32 s);
V3 scalev3(V3 a, V3 s);
F32 dotv3(V3 a, V3 b);
V3 crossv3(V3 l, V3 r);
F32 len2v3(V3 a);
F32 lenv3(V3 a);
V3 normv3(V3 a);
void printv3(V3 a);
V4 v4(F32 x, F32 y, F32 z, F32 w);
V4 v4a(F32 x);
V4 v4fromv3(V3 a);
V4 invv4(V4 a);
V4 addv4(V4 a, V4 b);
V4 subv4(V4 a, V4 b);
V4 scalefv4(V4 a, F32 s);
V4 scalev4(V4 a, V4 s);
F32 dotv4(V4 a, V4 b);
F32 len2v4(V4 a);
F32 lenv4(V4 a);
V4 normv4(V4 a);
void printv4(V4 a);
/* NOTE(pryazha): Matrices */
F32 detmat4(MAT4 m);
MAT4 transpmat4(MAT4 m);
MAT4 mulmat4(MAT4 left, MAT4 right);
MAT4 translmat4(MAT4 m, V3 v);
MAT4 scalemat4(MAT4 m, V3 v);
MAT4 rotateaxismat4(V3 x, V3 y, V3 z);
/* NOTE(pryazha): Angles in degrees */
MAT4 rotatemat4(MAT4 m, V3 angles);
V4 mulmat4v4(MAT4 m, V4 v);
void printmat4(MAT4 m);
#endif /* PRB_MATH_H */
|