summaryrefslogtreecommitdiffstats
path: root/src/math
diff options
context:
space:
mode:
authorFire-Head <Fire-Head@users.noreply.github.com>2020-12-19 20:33:17 +0100
committerFire-Head <Fire-Head@users.noreply.github.com>2020-12-19 20:33:17 +0100
commit0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3 (patch)
tree1661ba63db29b109ab9e759bc5b2d293eb0841de /src/math
parentscaling (diff)
parentanim fixes (diff)
downloadre3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.tar
re3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.tar.gz
re3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.tar.bz2
re3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.tar.lz
re3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.tar.xz
re3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.tar.zst
re3-0bea6d039ba092a2c8677fdf52bf4fc6a6eeb3e3.zip
Diffstat (limited to 'src/math')
-rw-r--r--src/math/Quaternion.h5
-rw-r--r--src/math/Vector.h25
-rw-r--r--src/math/VuVector.h13
3 files changed, 18 insertions, 25 deletions
diff --git a/src/math/Quaternion.h b/src/math/Quaternion.h
index a5a34626..47c94f7c 100644
--- a/src/math/Quaternion.h
+++ b/src/math/Quaternion.h
@@ -12,6 +12,11 @@ public:
float MagnitudeSqr(void) const { return x*x + y*y + z*z + w*w; }
void Normalise(void);
void Multiply(const CQuaternion &q1, const CQuaternion &q2);
+ void Invert(void){ // Conjugate would have been a better name
+ x = -x;
+ y = -y;
+ z = -z;
+ }
const CQuaternion &operator+=(CQuaternion const &right) {
x += right.x;
diff --git a/src/math/Vector.h b/src/math/Vector.h
index 082b296f..776bfcfe 100644
--- a/src/math/Vector.h
+++ b/src/math/Vector.h
@@ -1,23 +1,22 @@
#pragma once
-class CVector
+class CVector : public RwV3d
{
public:
- float x, y, z;
CVector(void) {}
- CVector(float x, float y, float z) : x(x), y(y), z(z) {}
-#ifdef RWCORE_H
- CVector(const RwV3d &v) : x(v.x), y(v.y), z(v.z) {}
-
- operator RwV3d (void) const {
- RwV3d vecRw = { this->x, this->y, this->z };
- return vecRw;
+ CVector(float x, float y, float z)
+ {
+ this->x = x;
+ this->y = y;
+ this->z = z;
}
-
- operator RwV3d *(void) {
- return (RwV3d*)this;
+
+ CVector(const RwV3d &v)
+ {
+ x = v.x;
+ y = v.y;
+ z = v.z;
}
-#endif
// (0,1,0) means no rotation. So get right vector and its atan
float Heading(void) const { return Atan2(-x, y); }
float Magnitude(void) const { return Sqrt(x*x + y*y + z*z); }
diff --git a/src/math/VuVector.h b/src/math/VuVector.h
index f90818e0..30d62cfc 100644
--- a/src/math/VuVector.h
+++ b/src/math/VuVector.h
@@ -8,18 +8,7 @@ public:
CVuVector(float x, float y, float z) : CVector(x, y, z) {}
CVuVector(float x, float y, float z, float w) : CVector(x, y, z), w(w) {}
CVuVector(const CVector &v) : CVector(v.x, v.y, v.z) {}
-#ifdef RWCORE_H
- CVuVector(const RwV3d &v) : CVector(v.x, v.y, v.z) {}
-
- operator RwV3d (void) const {
- RwV3d vecRw = { this->x, this->y, this->z };
- return vecRw;
- }
-
- operator RwV3d *(void) {
- return (RwV3d*)this;
- }
-#endif
+ CVuVector(const RwV3d &v) : CVector(v) {}
/*
void Normalise(void) {
float sq = MagnitudeSqr();