#ifndef GEOMETRY_UTILS_VECTOR4_H #define GEOMETRY_UTILS_VECTOR4_H #include "VectorNBase.h" namespace geometry_utils { template struct Vector4Base : VectorNBase { Vector4Base() : VectorNBase() {} Vector4Base(T val) : VectorNBase(val) {} Vector4Base(const Vector4Base& in) : VectorNBase(in.data) {} Vector4Base(const boost::array& in) : VectorNBase(in) {} Vector4Base(T (&in)[4]) : VectorNBase(in) {} Vector4Base(const Eigen::Matrix& in) : VectorNBase(in) {} Vector4Base(const VectorNBase& in) : VectorNBase(in) {} Vector4Base(T v1, T v2, T v3, T v4) { this->data[0] = v1; this->data[1] = v2; this->data[2] = v3; this->data[3] = v4; } }; inline Vector4Base operator*(const float& lhs, const Vector4Base& rhs) { return Vector4Base(rhs * lhs); } inline Vector4Base operator*(const double& lhs, const Vector4Base& rhs) { return Vector4Base(rhs * lhs); } typedef Vector4Base Vector4f; typedef Vector4Base Vec4f; typedef Vector4Base Vector4d; typedef Vector4Base Vec4d; typedef Vector4Base Vector4; typedef Vector4Base Vec4; } #endif