NppClone/src/vector2D.h

77 lines
1.6 KiB
C
Raw Normal View History

2023-05-03 22:50:46 +02:00
#ifndef VECTOR2D_H
#define VECTOR2D_H
#include <num/num.h>
class Vector2D
{
public:
Vector2D();
Vector2D( float x, float y );
Vector2D( libnum::num32 x, libnum::num32 y );
~Vector2D();
Vector2D AddVectors( Vector2D a, Vector2D b );
inline constexpr Vector2D &operator+=( Vector2D const &other )
{
this->x += other.x;
this->y += other.y;
return *this;
}
inline constexpr Vector2D &operator-=( Vector2D const &other )
{
this->x -= other.x;
this->y -= other.y;
return *this;
}
inline constexpr Vector2D &operator*=( float scale )
{
this->x *= libnum::num32(scale);
this->y *= libnum::num32(scale);
return *this;
}
inline constexpr Vector2D &operator/=( float scale )
{
this->x /= libnum::num32(scale);
this->y /= libnum::num32(scale);
return *this;
}
inline friend Vector2D operator*(float scale, Vector2D const &v) {
Vector2D r;
r.x = v.x * libnum::num32( scale );
r.y = v.y * libnum::num32( scale );
return r;
}
inline friend Vector2D operator*(Vector2D const &v, float scale) {
Vector2D r;
r.x = v.x * libnum::num32( scale );
r.y = v.y * libnum::num32( scale );
return r;
}
inline friend Vector2D operator/(Vector2D const &v, float scale) {
Vector2D r;
r.x = v.x / libnum::num32( scale );
r.y = v.y / libnum::num32( scale );
return r;
}
libnum::num32 x;
libnum::num32 y;
};
#endif