aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp/geo/Vector2D.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp/geo/Vector2D.hpp')
-rw-r--r--meowpp/geo/Vector2D.hpp327
1 files changed, 0 insertions, 327 deletions
diff --git a/meowpp/geo/Vector2D.hpp b/meowpp/geo/Vector2D.hpp
deleted file mode 100644
index e1d0f41..0000000
--- a/meowpp/geo/Vector2D.hpp
+++ /dev/null
@@ -1,327 +0,0 @@
-#include "Vector2D.h"
-
-#include "../math/utility.h"
-#include "../math/Matrix.h"
-
-#include <cmath>
-
-namespace meow{
- template<class Scalar>
- inline
- Vector2D<Scalar>::Vector2D():
- _x(0),
- _y(0){
- }
-
-
- template<class Scalar>
- inline
- Vector2D<Scalar>::Vector2D(Vector2D const& __v):
- _x(__v._x),
- _y(__v._y){
- }
-
-
- template<class Scalar>
- inline
- Vector2D<Scalar>::Vector2D(Scalar const& __x, Scalar const& __y):
- _x(__x),
- _y(__y){
- }
-
-
- template<class Scalar>
- inline
- Vector2D<Scalar>::~Vector2D(){
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::copy(Vector2D const& __v){
- _x = __v.x();
- _y = __v.y();
- return *this;
- }
-
- template<class Scalar>
- inline Scalar const&
- Vector2D<Scalar>::x() const{
- return _x;
- }
-
-
- template<class Scalar>
- inline Scalar const&
- Vector2D<Scalar>::y() const{
- return _y;
- }
-
-
- template<class Scalar>
- inline Scalar const&
- Vector2D<Scalar>::x(Scalar const& __s){
- _x = __s;
- return x();
- }
-
-
- template<class Scalar>
- inline Scalar const&
- Vector2D<Scalar>::y(Scalar const& __s){
- _y = __s;
- return y();
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::xy(Scalar const& __x, Scalar const& __y){
- _x = __x;
- _y = __y;
- return *this;
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::positive() const{
- return *this;
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::negative() const{
- return Vector2D<Scalar>(-x(), -y());
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::right() const{
- return Vector2D<Scalar>(-y(), x());
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::add(Vector2D const& __v) const{
- return Vector2D<Scalar>(x() + __v.x(), y() + __v.y());
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::sub(Vector2D const& __v) const{
- return Vector2D<Scalar>(x() - __v.x(), y() - __v.y());
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::mul(Scalar const& __s) const{
- return Vector2D<Scalar>(x() * __s, y() * __s);
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::div(Scalar const& __s) const{
- return Vector2D<Scalar>(x() / __s, y() / __s);
- }
-
-
- template<class Scalar>
- inline Scalar
- Vector2D<Scalar>::dot(Vector2D const& __v) const{
- return (x() * __v.x() + y() * __v.y());
- }
-
-
- template<class Scalar>
- inline Scalar
- Vector2D<Scalar>::cross(Vector2D const& __v) const{
- return (x() * __v.y() - y() * __v.x());
- }
-
-
- template<class Scalar>
- inline Scalar
- Vector2D<Scalar>::length() const{
- return Scalar(sqrt(double(length2())));
- }
-
-
- template<class Scalar>
- inline Scalar
- Vector2D<Scalar>::length2() const{
- return squ(x()) + squ(y());
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::normalize(){
- return copy(normalized());
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::normalized() const{
- return div(length());
- }
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::rotate(Scalar const& __theta){
- return copy(rotated(__theta));
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::rotated(Scalar const& __theta) const{
- Scalar cs(cos(-double(__theta)));
- Scalar sn(sin(-double(__theta)));
- Vector2D<Scalar> new_x(cs, sn);
- return Vector2D<Scalar>(new_x.dot(*this), new_x.cross(*this));
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::reflect(Vector2D const& __v){
- return copy(reflected(__v));
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::reflected(Vector2D const& __v) const{
- return __v.mul(__v.dot(*this) * 2 / __v.length2()).sub(*this);
- }
-
-
- template<class Scalar>
- inline Matrix<Scalar>
- Vector2D<Scalar>::matrix() const{
- Matrix<Scalar> ret(2, 0, Scalar(0));
- ret(0, 0) = x();
- ret(1, 0) = y();
- return ret;
- }
-
-
- template<class Scalar>
- inline Matrix<Scalar>
- Vector2D<Scalar>::matrix(Scalar const& __homo) const{
- Matrix<Scalar> ret(3, 0, Scalar(0));
- ret(0, 0) = x();
- ret(1, 0) = y();
- ret(2, 0) = __homo;
- return ret;
- }
-
-
- template<class Scalar>
- inline Scalar const&
- Vector2D<Scalar>::operator()(size_t n) const{
- return (n == 0 ? x() : y());
- }
-
-
- template<class Scalar>
- inline Scalar&
- Vector2D<Scalar>::operator()(size_t n){
- return (n == 0 ? _x : _y);
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::operator()(Scalar const& __x, Scalar const& __y){
- x(__x);
- y(__y);
- return *this;
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator+() const{
- return positive();
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator-() const{
- return negative();
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator~() const{
- return right();
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator+(Vector2D const& __v) const{
- return add(__v);
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator-(Vector2D const& __v) const{
- return sub(__v);
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator*(Scalar const& __s) const{
- return mul(__s);
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>
- Vector2D<Scalar>::operator/(Scalar const& __s) const{
- return div(__s);
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::operator+=(Vector2D const& __v){
- return copy(add(__v));
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::operator-=(Vector2D const& __v){
- return copy(sub(__v));
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::operator*=(Scalar const& __s){
- return copy(mul(__s));
- }
-
-
- template<class Scalar>
- inline Vector2D<Scalar>&
- Vector2D<Scalar>::operator/=(Scalar const& __s){
- return copy(div(__s));
- }
-}
-