File: RotationMatrix.h

package info (click to toggle)
darkradiant 3.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 41,080 kB
  • sloc: cpp: 264,743; ansic: 10,659; python: 1,852; xml: 1,650; sh: 92; makefile: 21
file content (57 lines) | stat: -rw-r--r-- 1,102 bytes parent folder | download | duplicates (6)
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
#pragma once

#include <string>

#include "math/Quaternion.h"

class Entity;

/// Nine-element matrix representing a rotation in 3D space
class RotationMatrix
{
public:
	float rotation[9];

	RotationMatrix()
	{
		setIdentity();
	}

	/**
     * Cast to float*, also enables operator[].
	 */
	operator float* () {
		return rotation;
	}

	/**
     * Cast to const float* to provide operator[] for const objects.
	 */
	operator const float* () const {
		return rotation;
	}

	// Reverts this rotation to the identity matrix
	void setIdentity();

	void readFromString(const std::string& value);

	void writeToEntity(Entity* entity, const std::string& key = "rotation") const;

    // Returns the string representation of this rotation
    // suitable for writing it to the entity's key/value pairs.
    std::string getRotationKeyValue() const;

	Matrix4 getMatrix4() const;

	void setFromMatrix4(const Matrix4& matrix);

	// Assignment operator
	const RotationMatrix& operator=(const RotationMatrix& other);

	void rotate(const Quaternion& rotate);

	void setFromAngleString(const std::string& value);
};