#ifndef geo_Vector3D_H__ #define geo_Vector3D_H__ #include "../math/Matrix.h" #include namespace meow{ template class Vector3D{ private: Scalar _x, _y, _z; public: Vector3D(); Vector3D(Vector3D const& __v); Vector3D(Scalar const& __x, Scalar const& __y, Scalar const& _z); ~Vector3D(); // Vector3D& copy(Vector3D const& __v); // Scalar const& x() const; Scalar const& y() const; Scalar const& z() const; Scalar const& x(Scalar const& __s); Scalar const& y(Scalar const& __s); Scalar const& z(Scalar const& __s); Vector3D& xyz(Scalar const& __x, Scalar const& __y, Scalar const& __z); // Vector3D positive() const; Vector3D negative() const; Vector3D right () const; // Vector3D add(Vector3D const& __v) const; Vector3D sub(Vector3D const& __v) const; Vector3D mul(Scalar const& __s) const; Vector3D div(Scalar const& __s) const; // Scalar dot (Vector3D const& __v) const; Vector3D cross(Vector3D const& __v) const; Scalar length () const; Scalar length2() const; // Vector3D& normalize (); Vector3D normalized() const; Vector3D& rotate (Vector3D const& __axis, Scalar const& __theta); Vector3D rotated (Vector3D const& __axis, Scalar const& __theta) const; Vector3D& reflect (Vector3D const& __v); Vector3D reflected (Vector3D const& __v) const; // Matrix matrix( ) const; Matrix matrix(Scalar const& __homo) const; // Scalar const& operator()(size_t n) const; Scalar& operator()(size_t n); Vector3D& operator()(Scalar const& __x, Scalar const& __y, Scalar const& __z); // Vector3D operator+() const; Vector3D operator-() const; Vector3D operator~() const; // Vector3D operator+(Vector3D const& __v) const; Vector3D operator-(Vector3D const& __v) const; Vector3D operator*(Scalar const& __s) const; Vector3D operator/(Scalar const& __s) const; // Vector3D& operator+=(Vector3D const& __v); Vector3D& operator-=(Vector3D const& __v); Vector3D& operator*=(Scalar const& __s); Vector3D& operator/=(Scalar const& __s); }; } #include "Vector3D.hpp" #endif // geo_Vector3D_H__