More operators
All checks were successful
Run ReCI Build Test / Explore-Gitea-Actions (push) Successful in 6m0s
Build Docs With Doxygen / Explore-Gitea-Actions (push) Successful in 20s

This commit is contained in:
2024-12-04 11:38:33 -05:00
parent d715391d2a
commit df2c8b31bf
5 changed files with 25 additions and 0 deletions

View File

@@ -4,6 +4,7 @@
namespace J3ML::LinearAlgebra
{
class Vector2; // A type representing a position in a 2-dimensional coordinate space.
class Vector2i;
class Vector3; // A type representing a position in a 3-dimensional coordinate space.
class Vector4; // A type representing a position in a 4-dimensional coordinate space.
class Angle2D; // Uses x,y components to represent a 2D rotation.

View File

@@ -58,6 +58,7 @@ namespace J3ML::LinearAlgebra {
// Constructs a new Vector2 with the value {scalar, scalar}
explicit Vector2(float scalar);
Vector2(const Vector2& rhs); // Copy Constructor
explicit Vector2(const Vector2i& rhs);
//Vector2(Vector2&&) = default; // Move Constructor

View File

@@ -9,7 +9,9 @@ class J3ML::LinearAlgebra::Vector2i {
public:
int x, y;
public:
Vector2i();
Vector2i(int x, int y) : x(x), y(y) {}
explicit Vector2i(int rhs) : x(rhs), y(rhs) {}
public:
bool operator == (const Vector2i& rhs) const;
bool operator != (const Vector2i& rhs) const;
@@ -21,7 +23,9 @@ public:
Vector2i operator +(const Vector2i& rhs) const;
Vector2i operator -(const Vector2i& rhs) const;
Vector2i operator *(const Vector2i& rhs) const;
Vector2i operator *(int rhs) const;
Vector2i operator /(const Vector2i& rhs) const;
Vector2i operator /(int rhs) const;
public:
[[nodiscard]] std::string ToString() const;
};

View File

@@ -7,6 +7,7 @@
#include <J3ML/LinearAlgebra/Matrix3x3.hpp>
#include <J3ML/LinearAlgebra/Matrix4x4.hpp>
#include <J3ML/LinearAlgebra/Vector4.hpp>
#include <J3ML/LinearAlgebra/Vector2i.hpp>
namespace J3ML::LinearAlgebra {
@@ -499,6 +500,11 @@ namespace J3ML::LinearAlgebra {
return std::format("{},{}", x, y);
}
Vector2::Vector2(const Vector2i& rhs) {
x = rhs.x;
y = rhs.y;
}
Vector2 operator*(float lhs, const Vector2 &rhs) {
return {lhs * rhs.x, lhs * rhs.y};
}

View File

@@ -58,6 +58,19 @@ std::string J3ML::LinearAlgebra::Vector2i::ToString() const {
return std::string(std::to_string(x) + " " + std::to_string(y));
}
J3ML::LinearAlgebra::Vector2i::Vector2i() {
x = 0;
y = 0;
}
J3ML::LinearAlgebra::Vector2i J3ML::LinearAlgebra::Vector2i::operator *(const int rhs) const {
return {x * rhs, y * rhs};
}
J3ML::LinearAlgebra::Vector2i J3ML::LinearAlgebra::Vector2i::operator/(int rhs) const {
return {x / rhs, y / rhs};
}