From c6d17ef545978bec555c8af8ef5eaef82c44e5f1 Mon Sep 17 00:00:00 2001 From: Aki Date: Sat, 12 Nov 2022 14:28:39 +0100 Subject: Implemented very basic linear move-to-dest component --- battles/src/Point.cpp | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 battles/src/Point.cpp (limited to 'battles/src/Point.cpp') diff --git a/battles/src/Point.cpp b/battles/src/Point.cpp new file mode 100644 index 0000000..9ffa81c --- /dev/null +++ b/battles/src/Point.cpp @@ -0,0 +1,65 @@ +#include + +#include + + +namespace kurator +{ +namespace battles +{ + + +double +Point::magnitude() const +{ + return std::sqrt(std::pow(x, 2) + std::pow(y, 2)); +} + + +double +Point::distance(const Point& other) const +{ + return std::sqrt(std::pow(other.x - x, 2) + std::pow(other.y - y, 2)); +} + + +Point +Point::rotate(const double angle) const +{ + return { + x * std::cos(angle) - y * std::sin(angle), + x * std::sin(angle) + y * std::cos(angle), + }; +} + + +Point +Point::scale(const double _scale) const +{ + return {x * _scale, y * _scale}; +} + + +Point +Point::normalized() const +{ + return scale(1.0 / magnitude()); +} + + +Point +Point::operator-(const Point& other) const +{ + return {x - other.x, y - other.y}; +} + + +Point +Point::operator+(const Point& other) const +{ + return {x + other.x, y + other.y}; +} + + +} // namespace battles +} // namespace kurator -- cgit v1.1