StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
Vector3.hpp
1#pragma once
2#ifdef StevEngine_PHYSICS
3#include <Jolt/Jolt.h>
4#endif
5#ifdef StevEngine_MODELS
6#include "assimp/vector3.h"
7#endif
8#include <string>
9
10namespace StevEngine::Utilities {
11 class Vector2;
12
19 class Vector3 {
20 public:
21 //Values
22 double X, Y, Z;
23
24 //Constructors
31 Vector3(double x, double y, double z);
32
37 Vector3(const Vector3& from);
38
43 Vector3(double v);
44
46 Vector3();
47
48 //Functions
49 Vector3 Get() const;
50 double Magnitude() const;
52 Vector3 Normalized() const;
53
54 //Operators
55 Vector3 operator+ (const Vector3& other) const;
56 Vector3 operator- (const Vector3& other) const;
57 Vector3 operator- () const;
58 Vector3& operator+= (const Vector3& other);
59 Vector3& operator-= (const Vector3& other);
60 Vector3 operator* (const double& other) const;
61 Vector3 operator/ (const double& other) const;
62 bool operator== (const Vector3& other) const;
63
64 //Conversions
65 explicit operator Vector2() const;
66 explicit operator std::string() const;
67 const float* data() const;
68
69 #ifdef StevEngine_PHYSICS
70 operator JPH::DVec3() const;
71 operator JPH::Vec3() const;
72 Vector3& operator= (const JPH::Vec3& other);
73 Vector3& operator= (const JPH::DVec3& other);
74 Vector3(const JPH::Vec3& other);
75 Vector3(const JPH::DVec3& other);
76 #endif
77
78 #ifdef StevEngine_MODELS
79 operator aiVector3D() const;
80 Vector3& operator= (const aiVector3D& other);
81 Vector3(const aiVector3D& other);
82 #endif
83
84 //Static vectors
85 static const Vector3 up;
86 static const Vector3 right;
87 static const Vector3 forward;
88 static const Vector3 identity;
89 static const Vector3 zero;
90
97 static double Distance(const Vector3& a, const Vector3& b);
98
105 static Vector3 Cross(const Vector3& a, const Vector3& b);
106
113 static double Dot(const Vector3& a, const Vector3& b);
114
121 static Vector3 CombineScale(const Vector3& a, const Vector3& b);
122
130 static Vector3 Slerp(const Vector3& a, const Vector3& b, double t);
131 };
132}
2D vector class
Definition Vector2.hpp:13
static const Vector3 right
Right vector (1,0,0)
Definition Vector3.hpp:86
Vector3 & operator-=(const Vector3 &other)
Subtract-assign.
Definition Vector3.cpp:50
Vector3 operator*(const double &other) const
Scalar multiplication.
Definition Vector3.cpp:56
Vector3 & operator=(const JPH::Vec3 &other)
Assign from Jolt float vector.
Definition Vector3.cpp:97
static const Vector3 identity
One vector (1,1,1)
Definition Vector3.hpp:88
static Vector3 CombineScale(const Vector3 &a, const Vector3 &b)
Combine scale vectors by multiplication.
Definition Vector3.cpp:144
static const Vector3 zero
Zero vector (0,0,0)
Definition Vector3.hpp:89
Vector3 & Normalize()
Normalize this vector.
Definition Vector3.cpp:22
static double Dot(const Vector3 &a, const Vector3 &b)
Calculate dot product.
Definition Vector3.cpp:141
static const Vector3 up
Up vector (0,1,0)
Definition Vector3.hpp:85
bool operator==(const Vector3 &other) const
Equality comparison.
Definition Vector3.cpp:62
static Vector3 Slerp(const Vector3 &a, const Vector3 &b, double t)
Spherical interpolation between vectors.
Definition Vector3.cpp:151
double Z
Vector components.
Definition Vector3.hpp:22
double Magnitude() const
Get vector length.
Definition Vector3.cpp:19
static double Distance(const Vector3 &a, const Vector3 &b)
Calculate distance between vectors.
Definition Vector3.cpp:131
Vector3(double x, double y, double z)
Create vector from components.
Definition Vector3.cpp:11
Vector3()
Create zero vector.
Definition Vector3.cpp:14
Vector3 operator-() const
Negation.
Definition Vector3.cpp:41
Vector3 Get() const
Get copy of this vector.
Definition Vector3.cpp:16
static Vector3 Cross(const Vector3 &a, const Vector3 &b)
Calculate cross product.
Definition Vector3.cpp:134
static const Vector3 forward
Forward vector (0,0,-1)
Definition Vector3.hpp:87
Vector3 Normalized() const
Get normalized copy.
Definition Vector3.cpp:31
Vector3 operator/(const double &other) const
Scalar division.
Definition Vector3.cpp:59
Vector3 & operator+=(const Vector3 &other)
Add-assign.
Definition Vector3.cpp:44
const float * data() const
Get raw float array.
Definition Vector3.cpp:72
Vector3 operator+(const Vector3 &other) const
Addition.
Definition Vector3.cpp:35