Added a way to output vec2d in an easy way
This commit is contained in:
parent
d0670178c0
commit
7a5bf13575
83
vec2d.h
83
vec2d.h
@ -2,73 +2,78 @@
|
||||
#define VEC2D_H_INCLUDED
|
||||
|
||||
#include <cmath>
|
||||
#include <ostream>
|
||||
|
||||
class vec2d {
|
||||
public:
|
||||
public:
|
||||
double x;
|
||||
double y;
|
||||
|
||||
vec2d & operator = (const vec2d & other) {
|
||||
x = other.x;
|
||||
y = other.y;
|
||||
return *this;
|
||||
vec2d& operator=(const vec2d& other) {
|
||||
x = other.x;
|
||||
y = other.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
vec2d & operator += (const vec2d & other) {
|
||||
x += other.x;
|
||||
y += other.y;
|
||||
return *this;
|
||||
vec2d& operator+=(const vec2d& other) {
|
||||
x += other.x;
|
||||
y += other.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
vec2d & operator -= (const vec2d & other) {
|
||||
x -= other.x;
|
||||
y -= other.y;
|
||||
return *this;
|
||||
vec2d& operator-=(const vec2d& other) {
|
||||
x -= other.x;
|
||||
y -= other.y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
vec2d & operator *= (double l) {
|
||||
x *= l;
|
||||
y *= l;
|
||||
return *this;
|
||||
vec2d& operator*=(double l) {
|
||||
x *= l;
|
||||
y *= l;
|
||||
return *this;
|
||||
}
|
||||
|
||||
vec2d operator + (const vec2d & other) const {
|
||||
return vec2d{x + other.x, y + other.y};
|
||||
vec2d operator+(const vec2d& other) const {
|
||||
return vec2d{x + other.x, y + other.y};
|
||||
}
|
||||
|
||||
vec2d operator - (const vec2d & other) const {
|
||||
return vec2d{x - other.x, y - other.y};
|
||||
vec2d operator-(const vec2d& other) const {
|
||||
return vec2d{x - other.x, y - other.y};
|
||||
}
|
||||
|
||||
vec2d operator * (double l) const {
|
||||
return vec2d{x*l, y*l};
|
||||
vec2d operator*(double l) const {
|
||||
return vec2d{x * l, y * l};
|
||||
}
|
||||
|
||||
vec2d operator / (double a) const {
|
||||
return vec2d{x/a, y/a};
|
||||
vec2d operator/(double a) const {
|
||||
return vec2d{x / a, y / a};
|
||||
}
|
||||
|
||||
vec2d & rotate (double angle) {
|
||||
double sin_a = sin(angle);
|
||||
double cos_a = cos(angle);
|
||||
double x1 = x;
|
||||
double y1 = y;
|
||||
x = cos_a*x1 - sin_a*y1;
|
||||
y = sin_a*x1 + cos_a*y1;
|
||||
return *this;
|
||||
vec2d& rotate(double angle) {
|
||||
double sin_a = sin(angle);
|
||||
double cos_a = cos(angle);
|
||||
double x1 = x;
|
||||
double y1 = y;
|
||||
x = cos_a * x1 - sin_a * y1;
|
||||
y = sin_a * x1 + cos_a * y1;
|
||||
return *this;
|
||||
}
|
||||
|
||||
static double dot (const vec2d & a, const vec2d & b) {
|
||||
return a.x*b.x + a.y*b.y;
|
||||
static double dot(const vec2d& a, const vec2d& b) {
|
||||
return a.x * b.x + a.y * b.y;
|
||||
}
|
||||
|
||||
static double cross (const vec2d & a, const vec2d & b) {
|
||||
return a.x*b.x + a.y*b.y;
|
||||
static double cross(const vec2d& a, const vec2d& b) {
|
||||
return a.x * b.x + a.y * b.y;
|
||||
}
|
||||
};
|
||||
|
||||
static inline vec2d operator * (double l, const vec2d & v) {
|
||||
return vec2d{v.x*l, v.y*l};
|
||||
static inline std::ostream& operator<<(std::ostream& os, vec2d& p) {
|
||||
return os << '(' << p.x << ", " << p.y << ')';
|
||||
}
|
||||
|
||||
static inline vec2d operator*(double l, const vec2d& v) {
|
||||
return vec2d{v.x * l, v.y * l};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user