-
Notifications
You must be signed in to change notification settings - Fork 9
/
math.h
70 lines (47 loc) · 1.49 KB
/
math.h
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
#pragma once
// Êýѧ¿â
struct Vector {
float x, y, z, w;
};
struct Matrix
{
float m[4][4];
};
// length
float VectorLength(Vector v);
// add
void VectorAdd(Vector& v, const Vector& x, const Vector& y);
// sub
void VectorSub(Vector& v, const Vector& x, const Vector& y);
// dot product
float VectorDotProduct(const Vector& x, const Vector& y);
// cross product
void VectorCrossProduct(Vector& v, const Vector& x, const Vector& y);
// normalize
void VectorNormalize(Vector& v);
// interpolation
void VectorInterp(Vector& v, const Vector& x, const Vector& y, float t);
// matrix identity
void MatrixSetIdentity(Matrix& m);
// matrix zero
void MatrixSetZero(Matrix& m);
// matrix m = a + b
void MatrixAdd(Matrix& m, const Matrix& a, const Matrix& b);
// matrix m = a - b
void MatrixSub(Matrix& m, const Matrix& a, const Matrix& b);
// matrix m = a * b
void MatrixMul(Matrix& m, const Matrix& a, const Matrix& b);
// matrix m = a * f
void MatrixScale(Matrix& m, const Matrix& a, const float f);
// matrix v = x * m
void MatrixApply(Vector& v, const Vector& x, const Matrix& m);
// translate
void MatrixSetTranslate(Matrix& m, float x, float y, float z);
// scale
void MatrixSetScale(Matrix& m, float x, float y, float z);
// rotate
void MatrixSetRotate(Matrix& m, float x, float y, float z, float theta);
// lookat
void MatrixSetLookAt(Matrix& m, const Vector& eye, const Vector& at, const Vector& up);
// perspective
void MatrixSetPerspective(Matrix& m, float fovy, float aspect, float zn, float fn);