summaryrefslogtreecommitdiff
path: root/prb_math.h
blob: 52c6289edad5f15509dac5440b4a189a183f6ea3 (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 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 */