#pragma once #include "Point.h" #include "Vector.h" #include "Matrix.h" class Rotation { public: enum class Axis { X, Y, Z, USER }; Rotation(double angle = 0.0, Axis axis = Axis::Z, const Point& loc = {}, const Vector& customAxis = {}); const Matrix& getMatrix() const; bool isIdentity() const; bool isEqual(const Rotation& rotation) const; bool operator==(const Rotation& rhs) const { return isEqual(rhs); } bool operator!=(const Rotation& rhs) const { return !operator==(rhs); } private: void updateMatrix(); double mAngle{ 0 }; Axis mAxis{ Axis::Z }; Point mPoint; Vector mCustomAxis; Matrix mMatrix; };