I don't really like SFML's Vector Classes so I tried making my own. Any criticism is welcome.
class gVector2{
public:
float x, y;
float length = GetLength();
gVector2();
gVector2(float X, float Y) : x(X), y(Y){};
float GetLength(){ return sqrtf((x * x) + (y * y)); }
void Normalize(){ x /= length, y /= length; }
float Dot(gVector2 rightVec){ return (x * rightVec.x) + (y * rightVec.y); }
gVector2 operator+ (gVector2);
gVector2 operator- (gVector2);
gVector2 operator* (float);
gVector2 operator/ (float);
void operator+= (gVector2);
void operator-= (gVector2);
void operator*= (float);
void operator/= (float);
void operator= (gVector2);
bool operator== (gVector2);
bool operator!= (gVector2);
};
gVector2::gVector2(){
x = 0;
y = 0;
}
gVector2 gVector2::operator+(gVector2 rightVec){
gVector2 solution;
solution.x = x + rightVec.x;
solution.y = y + rightVec.y;
return solution;
}
gVector2 gVector2::operator-(gVector2 rightVec){
gVector2 solution;
solution.x = x - rightVec.x;
solution.y = y - rightVec.y;
return solution;
}
gVector2 gVector2::operator*(float scalar){
gVector2 solution;
solution.x = x * scalar;
solution.y = y * scalar;
return solution;
}
gVector2 gVector2::operator/(float scalar){
gVector2 solution;
solution.x = x / scalar;
solution.y = y / scalar;
return solution;
}
void gVector2::operator+=(gVector2 rightVec){
x += rightVec.x;
y += rightVec.y;
}
void gVector2::operator-=(gVector2 rightVec){
x -= rightVec.x;
y -= rightVec.y;
}
void gVector2::operator*=(float scalar){
x *= scalar;
y *= scalar;
}
void gVector2::operator/=(float scalar){
x /= scalar;
y /= scalar;
}
void gVector2::operator=(gVector2 rightVec){
x = rightVec.x;
y = rightVec.y;
}
bool gVector2::operator==(gVector2 rightVec){
if (x == rightVec.x &&
y == rightVec.y)
{
return true;
}
else{
return false;
}
}
bool gVector2::operator!=(gVector2 rightVec){
if (x != rightVec.x ||
y != rightVec.y)
{
return true;
}
else{
return false;
}
}
class gVector3{
public:
float x, y, z;
float length = GetLength();
gVector3();
gVector3(float X, float Y, float Z) : x(X), y(Y), z(Z) {};
float GetLength(){ return sqrtf((x * x) + (y * y) + (z * z)); }
void Normalize(){ x /= length, y /= length, z /= length; }
float Dot(gVector3 rightVec){ return (x * rightVec.x) + (y * rightVec.y) + (z * rightVec.z); }
gVector3 Cross(gVector3);
gVector3 operator+ (gVector3);
gVector3 operator- (gVector3);
gVector3 operator* (float);
gVector3 operator/ (float);
void operator+= (gVector3);
void operator-= (gVector3);
void operator*= (float);
void operator/= (float);
void operator= (gVector3);
bool operator== (gVector3);
bool operator!= (gVector3);
};
gVector3::gVector3(){
x = 0;
y = 0;
z = 0;
}
gVector3 gVector3::Cross(gVector3 rightVec){
gVector3 crossProduct;
crossProduct.x = (y * rightVec.z) - (z * rightVec.y);
crossProduct.y = (z * rightVec.x) - (x * rightVec.z);
crossProduct.z = (x * rightVec.y) - (y * rightVec.x);
return crossProduct;
}
gVector3 gVector3::operator+(gVector3 rightVec){
gVector3 solution;
solution.x = x + rightVec.x;
solution.y = y + rightVec.y;
solution.z = z + rightVec.z;
return solution;
}
gVector3 gVector3::operator-(gVector3 rightVec){
gVector3 solution;
solution.x = x - rightVec.x;
solution.y = y - rightVec.y;
solution.z = z - rightVec.z;
return solution;
}
gVector3 gVector3::operator*(float scalar){
gVector3 solution;
solution.x = x * scalar;
solution.y = y * scalar;
solution.z = z * scalar;
return solution;
}
gVector3 gVector3::operator/(float scalar){
gVector3 solution;
solution.x = x / scalar;
solution.y = y / scalar;
solution.z = z / scalar;
return solution;
}
void gVector3::operator+=(gVector3 rightVec){
x += rightVec.x;
y += rightVec.y;
z += rightVec.z;
}
void gVector3::operator-=(gVector3 rightVec){
x -= rightVec.x;
y -= rightVec.y;
z -= rightVec.z;
}
void gVector3::operator*=(float scalar){
x *= scalar;
y *= scalar;
z *= scalar;
}
void gVector3::operator/=(float scalar){
x /= scalar;
y /= scalar;
z /= scalar;
}
void gVector3::operator=(gVector3 rightVec){
x = rightVec.x;
y = rightVec.y;
z = rightVec.z;
}
bool gVector3::operator==(gVector3 rightVec){
if(x == rightVec.x &&
y == rightVec.y &&
z == rightVec.z)
{return true;
}else{
return false;
}
}
bool gVector3::operator!=(gVector3 rightVec){
if (x != rightVec.x ||
y != rightVec.y ||
z != rightVec.z)
{
return true;
}
else{
return false;
}
}