Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
df2c8b31bf | |||
d715391d2a |
@@ -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.
|
||||
|
@@ -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
|
||||
|
||||
|
||||
|
@@ -1,11 +1,31 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
|
||||
namespace J3ML::LinearAlgebra
|
||||
{
|
||||
class Vector2i
|
||||
{
|
||||
public:
|
||||
int x;
|
||||
int y;
|
||||
};
|
||||
}
|
||||
namespace J3ML::LinearAlgebra {
|
||||
class Vector2i;
|
||||
}
|
||||
|
||||
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;
|
||||
Vector2i& operator =(const Vector2i& rhs);
|
||||
Vector2i& operator +=(const Vector2i& rhs);
|
||||
Vector2i& operator -=(const Vector2i& rhs);
|
||||
Vector2i& operator *=(const Vector2i& rhs);
|
||||
Vector2i& operator /=(const Vector2i& rhs);
|
||||
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;
|
||||
};
|
@@ -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};
|
||||
}
|
||||
|
79
src/J3ML/LinearAlgebra/Vector2i.cpp
Normal file
79
src/J3ML/LinearAlgebra/Vector2i.cpp
Normal file
@@ -0,0 +1,79 @@
|
||||
#include <J3ML/LinearAlgebra/Vector2i.hpp>
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i &J3ML::LinearAlgebra::Vector2i::operator =(const Vector2i& rhs) {
|
||||
x = rhs.x;
|
||||
y = rhs.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool J3ML::LinearAlgebra::Vector2i::operator ==(const Vector2i& rhs) const {
|
||||
return (x == rhs.x && y == rhs.y);
|
||||
}
|
||||
|
||||
bool J3ML::LinearAlgebra::Vector2i::operator !=(const Vector2i& rhs) const {
|
||||
return !(*this == rhs);
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i& J3ML::LinearAlgebra::Vector2i::operator +=(const Vector2i& rhs) {
|
||||
x += rhs.x;
|
||||
y += rhs.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i& J3ML::LinearAlgebra::Vector2i::operator -=(const Vector2i& rhs) {
|
||||
x -= rhs.x;
|
||||
y -= rhs.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i& J3ML::LinearAlgebra::Vector2i::operator *=(const Vector2i& rhs) {
|
||||
x *= rhs.x;
|
||||
y *=rhs.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i& J3ML::LinearAlgebra::Vector2i::operator /=(const Vector2i& rhs) {
|
||||
x /= rhs.x;
|
||||
y /=rhs.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i J3ML::LinearAlgebra::Vector2i::operator +(const Vector2i& rhs) const {
|
||||
return {x + rhs.x, y + rhs.y};
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i J3ML::LinearAlgebra::Vector2i::operator -(const Vector2i& rhs) const {
|
||||
return {x - rhs.x, y - rhs.y};
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i J3ML::LinearAlgebra::Vector2i::operator *(const Vector2i& rhs) const {
|
||||
return {x * rhs.x, y * rhs.y};
|
||||
}
|
||||
|
||||
J3ML::LinearAlgebra::Vector2i J3ML::LinearAlgebra::Vector2i::operator /(const Vector2i& rhs) const {
|
||||
return {x / rhs.x, y / rhs.y};
|
||||
}
|
||||
|
||||
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};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user