0
|
1 /*
|
|
2 * DMLib
|
|
3 * -- Vector and matrix functions
|
|
4 * Programmed and designed by Matti 'ccr' Hamalainen
|
|
5 * (C) Copyright 2011 Tecnic Software productions (TNSP)
|
|
6 */
|
|
7 #ifndef DMVECMAT_H
|
|
8 #define DMVECMAT_H
|
|
9 #include "dmlib.h"
|
|
10
|
|
11 #ifdef __cplusplus
|
|
12 extern "C" {
|
|
13 #endif
|
|
14
|
|
15 #define DM_MATRIX_SIZE (3)
|
|
16
|
|
17 typedef struct
|
|
18 {
|
|
19 DMFloat x, y, z;
|
|
20 } DMVector;
|
|
21
|
|
22 typedef struct
|
|
23 {
|
|
24 DMFloat m[DM_MATRIX_SIZE][DM_MATRIX_SIZE];
|
|
25 } DMMatrix;
|
|
26
|
|
27 void dm_vector_copy(DMVector *vd, DMVector *vs);
|
|
28
|
|
29 void dm_vector_add(DMVector *vr, const DMVector *v2);
|
|
30 void dm_vector_add_r(DMVector *vr, const DMVector *v1, const DMVector *v2);
|
|
31 void dm_vector_sub(DMVector *vr, const DMVector *v2);
|
|
32 void dm_vector_sub_r(DMVector *vr, const DMVector *v1, const DMVector *v2);
|
|
33
|
|
34 DMFloat dm_vector_length(const DMVector *vs);
|
|
35 void dm_vector_normalize(DMVector *vs);
|
|
36 void dm_vector_scale(DMVector * vec, const DMFloat k);
|
|
37 DMFloat dm_vector_dot(const DMVector *v1, const DMVector *v2);
|
|
38 void dm_vector_cross(DMVector *vr, const DMVector *v1, const DMVector *v2);
|
|
39
|
|
40
|
|
41 void dm_vector_mul_by_mat(DMVector *vd, const DMVector *vs, const DMMatrix *mat);
|
|
42 void dm_vector_mul_by_mat_n(DMVector *list, const int nlist, const DMMatrix *mat);
|
|
43
|
|
44 void dm_matrix_unit(DMMatrix *mat);
|
|
45 void dm_matrix_transpose(DMMatrix *mat1, const DMMatrix *mat2);
|
|
46
|
|
47 void dm_matrix_mul(DMMatrix *mat1, const DMMatrix *mat2);
|
|
48 void dm_matrix_mul_n(DMMatrix *list, const int nlist, const DMMatrix *mat);
|
|
49
|
|
50 void dm_matrix_rot(DMMatrix *mat,
|
|
51 const DMFloat sx, const DMFloat sy, const DMFloat sz,
|
|
52 const DMFloat cx, const DMFloat cy, const DMFloat cz);
|
|
53
|
|
54 void dm_matrix_rot_a(DMMatrix *mat,
|
|
55 const DMFloat ax, const DMFloat ay, const DMFloat az);
|
|
56
|
|
57
|
|
58 #ifdef __cplusplus
|
|
59 }
|
|
60 #endif
|
|
61 #endif // DMVECMAT_H
|