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
|
#ifndef PRB_MATH_H
#define PRB_MATH_H
/* NOTE(pryazha): Numeric */
#define F32_PI 3.14159265359f
#define DEG2RAD F32_PI/180.0f
#define RAD2DEG 182.0f/F32_PI
F32 f32sin(F32 a);
F32 f32cos(F32 a);
F32 f32sqrt(F32 a);
/* NOTE(pryazha): Vectors */
V2 v2(F32 x, F32 y);
V2 v2a(F32 x);
V2 v2neg(V2 a);
V2 v2add(V2 a, V2 b);
V2 v2sub(V2 a, V2 b);
V2 v2scalef(V2 a, F32 s);
V2 v2scale(V2 a, V2 s);
F32 v2dot(V2 a, V2 b);
F32 v2len2(V2 a);
F32 v2len(V2 a);
void v2print(V2 a);
V3 v3(F32 x, F32 y, F32 z);
V3 v3a(F32 x);
V3 v3neg(V3 a);
V3 v3add(V3 a, V3 b);
V3 v3sub(V3 a, V3 b);
V3 v3scalef(V3 a, F32 s);
V3 v3scale(V3 a, V3 s);
F32 v3dot(V3 a, V3 b);
V3 v3cross(V3 l, V3 r);
F32 v3len2(V3 a);
F32 v3len(V3 a);
void v3print(V3 a);
V4 v4(F32 x, F32 y, F32 z, F32 w);
V4 v4a(F32 x);
V4 v4fromv3(V3 a);
V4 v4neg(V4 a);
V4 v4add(V4 a, V4 b);
V4 v4sub(V4 a, V4 b);
V4 v4scalef(V4 a, F32 s);
V4 v4scale(V4 a, V4 s);
F32 v4dot(V4 a, V4 b);
F32 v4len2(V4 a);
F32 v4len(V4 a);
void v4print(V4 a);
/* NOTE(pryazha): Matrices */
F32 mat4det(Mat4 m);
Mat4 mat4transpose(Mat4 m);
Mat4 mat4mul(Mat4 left, Mat4 right);
Mat4 mat4translate(Mat4 m, V3 v);
Mat4 mat4scale(Mat4 m, V3 v);
Mat4 mat4_change_basis(V3 x, V3 y, V3 z);
Mat4 mat4rotate(Mat4 m, V3 angles); /* NOTE(pryazha): Angles in degrees */
V4 mat4v4mul(Mat4 m, V4 v);
void mat4print(Mat4 m);
#endif /* PRB_MATH_H */
|