#ifndef GEOMETRY_UTILS_VECTOR2_H #define GEOMETRY_UTILS_VECTOR2_H #include "VectorNBase.h" namespace geometry_utils { template struct Vector2Base : VectorNBase { Vector2Base() : VectorNBase() {} Vector2Base(T val) : VectorNBase(val) {} Vector2Base(const Vector2Base& in) : VectorNBase(in.data) {} Vector2Base(const boost::array& in) : VectorNBase(in) {} Vector2Base(T (&in)[2]) : VectorNBase(in) {} Vector2Base(const Eigen::Matrix& in) : VectorNBase(in) {} Vector2Base(const VectorNBase& in) : VectorNBase(in) {} Vector2Base(T v1, T v2) { this->data[0] = v1; this->data[1] = v2; } T X() const { return this->data[0]; } T Y() const { return this->data[1]; } }; inline Vector2Base operator*(const float& lhs, const Vector2Base& rhs) { return Vector2Base(rhs * lhs); } inline Vector2Base operator*(const double& lhs, const Vector2Base& rhs) { return Vector2Base(rhs * lhs); } typedef Vector2Base Vector2f; typedef Vector2Base Vec2f; typedef Vector2Base Vector2d; typedef Vector2Base Vec2d; typedef Vector2Base Vector2; typedef Vector2Base Vec2; } #endif