summaryrefslogtreecommitdiff
path: root/prb_math.h
blob: f569100d6ea45364fff374b331e3f897157e2a83 (plain)
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 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	f32tan(F32 a);
F32	f32sqrt(F32 a);

/* NOTE(pryazha): Vectors */
V2	v2(F32 x, F32 y);
V2	v2a(F32 x);
V2	v2inv(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);
V2	v2norm(V2 a);
void	v2print(V2 a);

V3	v3(F32 x, F32 y, F32 z);
V3	v3a(F32 x);
V3	v3fromv2(V2 a);
V3	v3fromv4(V4 a);
V3	v3inv(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);
V3	v3norm(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	v4inv(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);
V4	v4norm(V4 a);
void	v4print(V4 a);

/* NOTE(pryazha): Matrices */
F32	mat4det(MAT4 m);
MAT4	mat4transp(MAT4 m);
MAT4	mat4mul(MAT4 left, MAT4 right);
MAT4	mat4transl(MAT4 m, V3 v);
MAT4	mat4scale(MAT4 m, V3 v);
MAT4	mat4_change_basis(V3 x, V3 y, V3 z);
/* NOTE(pryazha): Angles in degrees */
MAT4	mat4rotate(MAT4 m, V3 angles);
V4	mat4v4mul(MAT4 m, V4 v);
void	mat4print(MAT4 m);

#endif /* PRB_MATH_H */