123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- * Author: Patrick-Christopher Mattulat
- * Company: Lynar Studios
- * E-Mail: webmaster@lynarstudios.com
- * Created: 2022-08-05
- * Changed: 2022-08-07
- *
- * */
- #ifndef LS_MATH_VECTOR2_HPP
- #define LS_MATH_VECTOR2_HPP
- #include <ls-math/core/types/VectorTypes.hpp>
- #include <cstdlib>
- namespace ls::math::vector
- {
- class Vector2
- {
- public:
- Vector2(const ls::math::core::type::vector2_component& _x, const ls::math::core::type::vector2_component& _y);
- ~Vector2() = default;
- // arithmetic operations
- ls::math::vector::Vector2 operator+(const ls::math::vector::Vector2& _vector) const;
- ls::math::vector::Vector2 operator-(const ls::math::vector::Vector2& _vector) const;
- ls::math::core::type::vector_scalar operator*(const ls::math::vector::Vector2& _vector) const;
- ls::math::vector::Vector2 operator*(double _value);
- ls::math::vector::Vector2 operator/(double _divisor);
- // comparison operations
- bool operator==(const Vector2& _vector);
- bool operator!=(const Vector2& _vector);
- // additional functionality
- static ls::math::vector::Vector2 add(const ls::math::vector::Vector2& _leftAddend, const ls::math::vector::Vector2& _rightAddend);
- static ls::math::core::type::vector_scalar dot(const ls::math::vector::Vector2& _leftAddend, const ls::math::vector::Vector2& _rightAddend);
- ls::math::core::type::vector2_components getComponents();
- double getLength();
- ls::math::core::type::vector2_component getX();
- ls::math::core::type::vector2_component getY();
- ls::math::vector::Vector2 normalize();
- void setX(const ls::math::core::type::vector2_component& _value);
- void setY(const ls::math::core::type::vector2_component& _value);
- static ls::math::vector::Vector2 subtract(const ls::math::vector::Vector2& _leftAddend, const ls::math::vector::Vector2& _rightAddend);
- private:
- ls::math::core::type::vector2_components components{};
- static ls::math::vector::Vector2 _add(const ls::math::vector::Vector2& _leftAddend, const ls::math::vector::Vector2& _rightAddend);
- static ls::math::core::type::vector_scalar _dot(const ls::math::vector::Vector2& _leftAddend, const ls::math::vector::Vector2& _rightAddend);
- static double _getLength(const ls::math::core::type::vector2_component& _x, const ls::math::core::type::vector2_component& _y);
- static ls::math::vector::Vector2 _operatorDivision(const ls::math::core::type::vector2_component& _x, const ls::math::core::type::vector2_component& _y, double _divisor);
- static ls::math::vector::Vector2 _subtract(const ls::math::vector::Vector2& _leftAddend, const ls::math::vector::Vector2& _rightAddend);
- };
- }
- #endif
|