dungeon_crawler

view prototype/vmath/basis.h @ 50:c40efa9cf844

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