summaryrefslogtreecommitdiffstats
path: root/include/core/Quat.hpp
diff options
context:
space:
mode:
authorKarroffel <therzog@mail.de>2017-05-12 21:53:07 +0200
committerKarroffel <therzog@mail.de>2017-05-12 21:53:07 +0200
commitcf30b0f39ddb2c6acad5d22655c4bca9015d7502 (patch)
tree45a4df6ff16450b334d6c8856a74f4f47f3e9336 /include/core/Quat.hpp
parent3969bcf07857b1a4af391bbddb924388cc7f44bb (diff)
downloadredot-cpp-cf30b0f39ddb2c6acad5d22655c4bca9015d7502.tar.gz
rewrote binding generator in python
Diffstat (limited to 'include/core/Quat.hpp')
-rw-r--r--include/core/Quat.hpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/include/core/Quat.hpp b/include/core/Quat.hpp
new file mode 100644
index 0000000..03bb015
--- /dev/null
+++ b/include/core/Quat.hpp
@@ -0,0 +1,93 @@
+#ifndef QUAT_H
+#define QUAT_H
+
+#if defined(_WIN32)
+# ifdef _GD_CPP_CORE_API_IMPL
+# define GD_CPP_CORE_API __declspec(dllexport)
+# else
+# define GD_CPP_CORE_API __declspec(dllimport)
+# endif
+#else
+# define GD_CPP_CORE_API
+#endif
+
+#include <cmath>
+
+#include "Vector3.hpp"
+
+// #include "Basis.h"
+
+namespace godot {
+
+class GD_CPP_CORE_API Quat{
+public:
+
+ real_t x,y,z,w;
+
+ real_t length_squared() const;
+ real_t length() const;
+
+ void normalize();
+
+ Quat normalized() const;
+
+ Quat inverse() const;
+
+ void set_euler(const Vector3& p_euler);
+
+ real_t dot(const Quat& q) const;
+
+ Vector3 get_euler() const;
+
+ Quat slerp(const Quat& q, const real_t& t) const;
+
+ Quat slerpni(const Quat& q, const real_t& t) const;
+
+ Quat cubic_slerp(const Quat& q, const Quat& prep, const Quat& postq,const real_t& t) const;
+
+ void get_axis_and_angle(Vector3& r_axis, real_t &r_angle) const;
+
+ void operator*=(const Quat& q);
+ Quat operator*(const Quat& q) const;
+
+
+
+ Quat operator*(const Vector3& v) const;
+
+ Vector3 xform(const Vector3& v) const;
+
+
+ void operator+=(const Quat& q);
+ void operator-=(const Quat& q);
+ void operator*=(const real_t& s);
+ void operator/=(const real_t& s);
+ Quat operator+(const Quat& q2) const;
+ Quat operator-(const Quat& q2) const;
+ Quat operator-() const;
+ Quat operator*(const real_t& s) const;
+ Quat operator/(const real_t& s) const;
+
+
+ bool operator==(const Quat& p_quat) const;
+ bool operator!=(const Quat& p_quat) const;
+
+ operator String() const;
+
+ inline void set( real_t p_x, real_t p_y, real_t p_z, real_t p_w) {
+ x=p_x; y=p_y; z=p_z; w=p_w;
+ }
+ inline Quat(real_t p_x, real_t p_y, real_t p_z, real_t p_w) {
+ x=p_x; y=p_y; z=p_z; w=p_w;
+ }
+ Quat(const Vector3& axis, const real_t& angle);
+
+ Quat(const Vector3& v0, const Vector3& v1) ;
+
+ inline Quat() {x=y=z=0; w=1; }
+
+};
+
+
+}
+
+#endif // QUAT_H