Stowy Physics Engine 0.1.0
Loading...
Searching...
No Matches
Vector2.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include <string>
14
15namespace stw
16{
20struct Vector2
21{
22 constexpr Vector2()
23 : Vector2(0, 0)
24 {}
25
26 constexpr Vector2(const float x, const float y)
27 : x(x), y(y)
28 {}
29
33 float x;
37 float y;
38
44 static Vector2 Normalize(const Vector2& v);
52 static Vector2 Lerp(const Vector2& a, const Vector2& b, float t);
61 static Vector2 TripleProduct(const Vector2& a, const Vector2& b, const Vector2& c);
62
67 [[nodiscard]] float Magnitude() const;
68
74 [[nodiscard]] float SqrMagnitude() const;
75
80 [[nodiscard]] Vector2 Normalized() const;
81
87 [[nodiscard]] float Dot(const Vector2& other) const;
88
94 [[nodiscard]] float Distance(const Vector2& other) const;
95
101 [[nodiscard]] float Angle(const Vector2& other) const;
102
107 [[nodiscard]] float Major() const;
108
113 [[nodiscard]] Vector2 PositivePerpendicular() const;
114
119 [[nodiscard]] Vector2 NegativePerpendicular() const;
120
125 [[nodiscard]] Vector2 NewMagnitude(float newMagnitude) const;
126
132 void RotateAround(const Vector2& center, float angle);
133
138 [[nodiscard]] std::string ToString() const;
139
140 constexpr static Vector2 Zero();
141
142 Vector2 operator+(const Vector2& other) const;
143 Vector2 operator-(const Vector2& other) const;
144 Vector2 operator+=(const Vector2& other);
145 Vector2 operator-=(const Vector2& other);
146 Vector2 operator+=(float scalar);
147 Vector2 operator-=(float scalar);
148 Vector2 operator*=(float scalar);
149 Vector2 operator/=(float scalar);
150 bool operator==(const Vector2& other) const;
151 Vector2 operator-() const;
152
153 friend Vector2 operator+(Vector2 vec, float scalar);
154 friend Vector2 operator-(Vector2 vec, float scalar);
155 friend Vector2 operator*(Vector2 vec, float scalar);
156 friend Vector2 operator*(float scalar, Vector2 vec);
157 friend Vector2 operator/(Vector2 vec, float scalar);
158};
159
161{
162 return { 0.0f, 0.0f };
163}
164
165std::ostream& operator<<(std::ostream& os, const Vector2& vec);
166}
Definition BroadPhaseGrid.hpp:18
std::ostream & operator<<(std::ostream &os, const Manifold &manifold)
Definition Manifold.cpp:28
A struct representing a 2D Vector.
Definition Vector2.hpp:21
Vector2 operator*=(float scalar)
Definition Vector2.cpp:148
Vector2 operator-=(const Vector2 &other)
Definition Vector2.cpp:127
float Major() const
Gets the biggest component of this vector.
Definition Vector2.cpp:70
float Magnitude() const
Gets the magnitude of this vector.
Definition Vector2.cpp:10
float SqrMagnitude() const
Gets the squared magnitude of this vector. It is faster that Magnitude, so it should be used for size...
Definition Vector2.cpp:15
Vector2 PositivePerpendicular() const
Computes the perpendicular vector in +90 degrees.
Definition Vector2.cpp:79
void RotateAround(const Vector2 &center, float angle)
Rotates this vector around the provided axis.
Definition Vector2.cpp:94
float Distance(const Vector2 &other) const
Computes the distance between this and other.
Definition Vector2.cpp:59
static constexpr Vector2 Zero()
Definition Vector2.hpp:160
bool operator==(const Vector2 &other) const
Definition Vector2.cpp:162
friend Vector2 operator*(Vector2 vec, float scalar)
Definition Vector2.cpp:188
float x
The X component of the 2D Vector.
Definition Vector2.hpp:33
Vector2 operator/=(float scalar)
Definition Vector2.cpp:155
Vector2 operator-() const
Definition Vector2.cpp:167
Vector2 Normalized() const
Gets this vector normalized.
Definition Vector2.cpp:42
std::string ToString() const
Gets a string representing this vector.
Definition Vector2.cpp:103
float Dot(const Vector2 &other) const
Computes the dot product between this and other.
Definition Vector2.cpp:54
constexpr Vector2()
Definition Vector2.hpp:22
float Angle(const Vector2 &other) const
Computes the angle between this and other.
Definition Vector2.cpp:65
float y
The Y component of the 2D Vector.
Definition Vector2.hpp:37
friend Vector2 operator+(Vector2 vec, float scalar)
Definition Vector2.cpp:178
constexpr Vector2(const float x, const float y)
Definition Vector2.hpp:26
friend Vector2 operator/(Vector2 vec, float scalar)
Definition Vector2.cpp:198
Vector2 NegativePerpendicular() const
Computes the perpendicular vector in -90 degrees.
Definition Vector2.cpp:84
Vector2 NewMagnitude(float newMagnitude) const
Sets the magnitude of this vector.
Definition Vector2.cpp:89
static Vector2 Normalize(const Vector2 &v)
Normalizes the given vector.
Definition Vector2.cpp:20
static Vector2 Lerp(const Vector2 &a, const Vector2 &b, float t)
Linearly interpolates between A and B.
Definition Vector2.cpp:25
Vector2 operator+=(const Vector2 &other)
Definition Vector2.cpp:120
static Vector2 TripleProduct(const Vector2 &a, const Vector2 &b, const Vector2 &c)
Compute the triple product with all of these vectors as 3d vectors with z = 0. p = a x (b x c)
Definition Vector2.cpp:34