# | Line 39 | Line 39 | namespace oopse { | |
---|---|---|
39 | ||
40 | namespace oopse { | |
41 | ||
42 | + | const double epsilon = 0.000001; |
43 | + | |
44 | + | template<typename T> |
45 | + | inline bool equal(T e1, T e2) { |
46 | + | return e1 == e2; |
47 | + | } |
48 | + | |
49 | + | template<> |
50 | + | inline bool equal(float e1, float e2) { |
51 | + | return fabs(e1 - e2) < epsilon; |
52 | + | } |
53 | + | |
54 | + | template<> |
55 | + | inline bool equal(double e1, double e2) { |
56 | + | return fabs(e1 - e2) < epsilon; |
57 | + | } |
58 | + | |
59 | /** | |
60 | * @class Vector Vector.hpp "math/Vector.hpp" | |
61 | * @brief Fix length vector class | |
# | Line 113 | Line 130 | namespace oopse { | |
130 | inline const double& operator()(unsigned int i) const { | |
131 | assert( i < Dim); | |
132 | return data_[i]; | |
133 | + | } |
134 | + | |
135 | + | /** |
136 | + | * Tests if this vetor is equal to other vector |
137 | + | * @return true if equal, otherwise return false |
138 | + | * @param v vector to be compared |
139 | + | */ |
140 | + | inline bool operator ==(const Vector<Real, Dim>& v) { |
141 | + | |
142 | + | for (unsigned int i = 0; i < Dim; i ++) { |
143 | + | if (!equal(data_[i], v[i])) { |
144 | + | return false; |
145 | + | } |
146 | + | } |
147 | + | |
148 | + | return true; |
149 | } | |
150 | ||
151 | + | /** |
152 | + | * Tests if this vetor is not equal to other vector |
153 | + | * @return true if equal, otherwise return false |
154 | + | * @param v vector to be compared |
155 | + | */ |
156 | + | inline bool operator !=(const Vector<Real, Dim>& v) { |
157 | + | return !(*this == v); |
158 | + | } |
159 | + | |
160 | /** Negates the value of this vector in place. */ | |
161 | inline void negate() { | |
162 | data_[0] = -data_[0]; |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |