// // Created by saintruler on 11.04.19. // #ifndef OPENGLTEST_POINT_H #define OPENGLTEST_POINT_H #include class point { public: point(double x, double y) { this->x = x; this->y = y; } friend point operator+(const point& left, const point& right) { return point(left.x + right.x, left.y + right.y); } friend point operator+=(point& left, const point& right) { left.x += right.x; left.y += right.y; return left; } friend point operator-(const point& left, const point& right) { return point(left.x - right.x, left.y - right.y); } friend point operator-=(point& left, const double right) { left.x -= right; left.y -= right; return left; } friend point operator/(const point& left, const double right) { return point(left.x / right, left.y / right); } friend point operator/=(point& left, const double right) { left.x /= right; left.y /= right; return left; } friend point operator*(const point& left, const double right) { return point(left.x * right, left.y * right); } friend point operator*=(point& left, const double right) { left.x *= right; left.y *= right; return left; } double length() { return sqrt(pow(x, 2) + pow(y, 2)); } double length_sqared() { return pow(x, 2) + pow(y, 2); } void normalize() { const double l = length(); this->x /= l; this->y /= l; } double x, y; }; #endif //OPENGLTEST_POINT_H