Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
vector3.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <glm/glm.hpp>
4 
5 class Vector3 : public glm::vec3 {
6 public:
7  using glm::vec3::vec3;
8 
9  Vector3();
10  Vector3(float x, float y, float z);
11  Vector3(float v);
12  Vector3(const glm::vec3& v);
13 
14  float& operator[](int index);
15  const float& operator[](int index) const;
16 
17  float length() const;
18 
19  Vector3 normalized() const;
20  void normalize();
21 
22  float dot(const Vector3& other) const;
23  Vector3 cross(const Vector3& other) const;
24 
25  float distance_to(const Vector3& other) const;
26 
27  Vector3 lerp(const Vector3& other, float t) const;
28 
29  Vector3 reflect(const Vector3& normal) const;
30  Vector3 refract(const Vector3& normal, float eta) const;
31 
32  Vector3 abs() const;
33  Vector3 sign() const;
34 
35  Vector3 floor() const;
36  Vector3 ceil() const;
37  Vector3 round() const;
38 
39  bool is_zero_approx() const;
40 
41  static const Vector3 ZERO;
42  static const Vector3 ONE;
43  static const Vector3 LEFT;
44  static const Vector3 RIGHT;
45  static const Vector3 UP;
46  static const Vector3 DOWN;
47  static const Vector3 FORWARD;
48  static const Vector3 BACK;
49 };
50 
51 class Vector3i : public glm::ivec3 {
52 public:
53  using glm::ivec3::ivec3;
54 
55  Vector3i();
56  Vector3i(int x, int y, int z);
57  Vector3i(int v);
58  Vector3i(const glm::ivec3& v);
59 
60  int& operator[](int index);
61  const int& operator[](int index) const;
62 
63  float length() const;
64 
65  Vector3i abs() const;
66  Vector3i sign() const;
67 
68  static const Vector3i ZERO;
69  static const Vector3i ONE;
70  static const Vector3i LEFT;
71  static const Vector3i RIGHT;
72  static const Vector3i UP;
73  static const Vector3i DOWN;
74  static const Vector3i FORWARD;
75  static const Vector3i BACK;
76 };
77 
78 using Vec3 = Vector3;
79 using Vec3i = Vector3i;
80 
Definition: vector3.h:5
bool is_zero_approx() const
Definition: vector3.cpp:77
Vector3()
Definition: vector3.cpp:8
float & operator[](int index)
Definition: vector3.cpp:13
static const Vector3 FORWARD
Definition: vector3.h:47
void normalize()
Definition: vector3.cpp:24
Vector3 floor() const
Definition: vector3.cpp:65
static const Vector3 BACK
Definition: vector3.h:48
Vector3 ceil() const
Definition: vector3.cpp:69
Vector3 normalized() const
Definition: vector3.cpp:20
static const Vector3 LEFT
Definition: vector3.h:43
float distance_to(const Vector3 &other) const
Definition: vector3.cpp:36
Vector3 round() const
Definition: vector3.cpp:73
Vector3 lerp(const Vector3 &other, float t) const
Definition: vector3.cpp:41
static const Vector3 RIGHT
Definition: vector3.h:44
float dot(const Vector3 &other) const
Definition: vector3.cpp:28
static const Vector3 DOWN
Definition: vector3.h:46
Vector3 sign() const
Definition: vector3.cpp:59
float length() const
Definition: vector3.cpp:16
static const Vector3 ZERO
Definition: vector3.h:41
Vector3 refract(const Vector3 &normal, float eta) const
Definition: vector3.cpp:51
Vector3 abs() const
Definition: vector3.cpp:55
static const Vector3 ONE
Definition: vector3.h:42
Vector3 reflect(const Vector3 &normal) const
Definition: vector3.cpp:47
static const Vector3 UP
Definition: vector3.h:45
Vector3 cross(const Vector3 &other) const
Definition: vector3.cpp:32
Definition: vector3.h:51
Vector3i sign() const
Definition: vector3.cpp:112
static const Vector3i RIGHT
Definition: vector3.h:71
static const Vector3i ZERO
Definition: vector3.h:68
Vector3i abs() const
Definition: vector3.cpp:108
Vector3i()
Definition: vector3.cpp:95
static const Vector3i FORWARD
Definition: vector3.h:74
float length() const
Definition: vector3.cpp:104
static const Vector3i UP
Definition: vector3.h:72
static const Vector3i LEFT
Definition: vector3.h:70
static const Vector3i BACK
Definition: vector3.h:75
int & operator[](int index)
Definition: vector3.cpp:100
static const Vector3i DOWN
Definition: vector3.h:73
static const Vector3i ONE
Definition: vector3.h:69