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