rev |
line source |
nuclear@2
|
1 /*
|
nuclear@2
|
2 libvmath - a vector math library
|
nuclear@2
|
3 Copyright (C) 2004-2011 John Tsiombikas <nuclear@member.fsf.org>
|
nuclear@2
|
4
|
nuclear@2
|
5 This program is free software: you can redistribute it and/or modify
|
nuclear@2
|
6 it under the terms of the GNU Lesser General Public License as published
|
nuclear@2
|
7 by the Free Software Foundation, either version 3 of the License, or
|
nuclear@2
|
8 (at your option) any later version.
|
nuclear@2
|
9
|
nuclear@2
|
10 This program is distributed in the hope that it will be useful,
|
nuclear@2
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
nuclear@2
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
nuclear@2
|
13 GNU Lesser General Public License for more details.
|
nuclear@2
|
14
|
nuclear@2
|
15 You should have received a copy of the GNU Lesser General Public License
|
nuclear@2
|
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
|
nuclear@2
|
17 */
|
nuclear@2
|
18
|
nuclear@2
|
19 #ifndef VMATH_BASIS_H_
|
nuclear@2
|
20 #define VMATH_BASIS_H_
|
nuclear@2
|
21
|
nuclear@2
|
22 #include "vector.h"
|
nuclear@2
|
23 #include "matrix.h"
|
nuclear@2
|
24
|
nuclear@2
|
25 enum {
|
nuclear@2
|
26 LEFT_HANDED,
|
nuclear@2
|
27 RIGHT_HANDED
|
nuclear@2
|
28 };
|
nuclear@2
|
29
|
nuclear@2
|
30 #ifdef __cplusplus
|
nuclear@2
|
31 extern "C" {
|
nuclear@2
|
32 #endif /* __cplusplus */
|
nuclear@2
|
33
|
nuclear@2
|
34 void basis_matrix(mat4_t res, vec3_t i, vec3_t j, vec3_t k);
|
nuclear@2
|
35 void basis_matrix_dir(mat4_t res, vec3_t dir);
|
nuclear@2
|
36
|
nuclear@2
|
37 #ifdef __cplusplus
|
nuclear@2
|
38 } /* extern "C" */
|
nuclear@2
|
39
|
nuclear@2
|
40 class Basis {
|
nuclear@2
|
41 public:
|
nuclear@2
|
42 Vector3 i, j, k;
|
nuclear@2
|
43
|
nuclear@2
|
44 Basis();
|
nuclear@2
|
45 Basis(const Vector3 &i, const Vector3 &j, const Vector3 &k);
|
nuclear@2
|
46 Basis(const Vector3 &dir, bool left_handed = true);
|
nuclear@2
|
47
|
nuclear@2
|
48 void rotate(scalar_t x, scalar_t y, scalar_t z);
|
nuclear@2
|
49 void rotate(const Vector3 &axis, scalar_t angle);
|
nuclear@2
|
50 void rotate(const Matrix4x4 &mat);
|
nuclear@2
|
51 void rotate(const Quaternion &quat);
|
nuclear@2
|
52
|
nuclear@2
|
53 Matrix3x3 create_rotation_matrix() const;
|
nuclear@2
|
54 };
|
nuclear@2
|
55 #endif /* __cplusplus */
|
nuclear@2
|
56
|
nuclear@2
|
57 #endif /* VMATH_BASIS_H_ */
|