The spica renderer
vector2d_detail.h
1 #ifdef _MSC_VER
2 #pragma once
3 #endif
4 
5 #ifndef _SPICA_VECTOR2D_DETAIL_H_
6 #define _SPICA_VECTOR2D_DETAIL_H_
7 
8 namespace spica {
9 
10  template <class T>
11  Vector2_<T>::Vector2_()
12  : _x{0}
13  , _y{0} {
14  }
15 
16  template <class T>
17  Vector2_<T>::Vector2_(T x, T y)
18  : _x(x)
19  , _y(y) {
20  }
21 
22  template <class T>
23  Vector2_<T>::Vector2_(const Vector2_<T>& v)
24  : _x(v._x)
25  , _y(v._y) {
26  }
27 
28  template <class T>
29  Vector2_<T>::~Vector2_() {
30  }
31 
32  template <class T>
33  Vector2_<T>&
34  Vector2_<T>::operator=(const Vector2_<T>& v) {
35  this->_x = v._x;
36  this->_y = v._y;
37  return *this;
38  }
39 
40  template <class T>
41  Vector2_<T>&
42  Vector2_<T>::operator+=(const Vector2_<T>& v) {
43  this->_x += v._x;
44  this->_y += v._y;
45  return *this;
46  }
47 
48  template <class T>
49  Vector2_<T>&
50  Vector2_<T>::operator-=(const Vector2_<T>& v) {
51  this->_x -= v._x;
52  this->_y -= v._y;
53  return *this;
54  }
55 
56  template <class T>
57  Vector2_<T>&
58  Vector2_<T>::operator*=(double s) {
59  this->_x *= s;
60  this->_y *= s;
61  return *this;
62  }
63 
64 } // namespace spica
65 
66 template <class T>
67 spica::Vector2_<T> operator+(const spica::Vector2_<T>& v1,
68  const spica::Vector2_<T>& v2) {
69  spica::Vector2_<T> ret = v1;
70  ret += v2;
71  return ret;
72 }
73 
74 template <class T>
75 spica::Vector2_<T> operator-(const spica::Vector2_<T>& v1,
76  const spica::Vector2_<T>& v2) {
77  spica::Vector2_<T> ret = v1;
78  ret -= v2;
79  return ret;
80 }
81 
82 template <class T>
83 spica::Vector2_<T> operator*(const spica::Vector2_<T>& v, double s) {
84  spica::Vector2_<T> ret = v;
85  ret *= s;
86  return ret;
87 }
88 
89 template <class T>
90 spica::Vector2_<T> operator*(double s, const spica::Vector2_<T>& v) {
91  spica::Vector2_<T> ret = v;
92  ret *= s;
93  return ret;
94 }
95 
96 #endif // _SPICA_VECTOR2D_DETAIL_H_
Two-dimensional vector.
Definition: core.hpp:50