2#include <glm/gtx/norm.hpp>
14 DYN_FUNC Vector<T, 2>::Vector(
T x)
20 DYN_FUNC Vector<T, 2>::Vector(
T x,
T y)
26 DYN_FUNC Vector<T, 2>::Vector(
const Vector<T, 2>& vec)
33 DYN_FUNC Vector<T, 2>::~Vector()
39 DYN_FUNC
T& Vector<T, 2>::operator[] (
unsigned int idx)
41 return const_cast<T &
>(
static_cast<const Vector<T, 2> &
>(*this)[idx]);
45 DYN_FUNC
const T& Vector<T, 2>::operator[] (
unsigned int idx)
const
51 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator+ (
const Vector<T, 2> &
vec2)
const
53 return Vector<T, 2>(*
this) +=
vec2;
57 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator+= (
const Vector<T, 2> &
vec2)
64 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator- (
const Vector<T, 2> &
vec2)
const
66 return Vector<T, 2>(*
this) -=
vec2;
70 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator-= (
const Vector<T, 2> &
vec2)
77 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator*(
const Vector<T, 2> &
vec2)
const
79 return Vector<T, 2>(data_[0] *
vec2[0], data_[1] *
vec2[1]);
83 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator*=(
const Vector<T, 2> &
vec2)
85 data_[0] *=
vec2.data_[0]; data_[1] *=
vec2.data_[1];
90 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator/(
const Vector<T, 2> &
vec2)
const
92 return Vector<T, 2>(data_[0] /
vec2[0], data_[1] /
vec2[1]);
96 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator/=(
const Vector<T, 2> &
vec2)
98 data_[0] /=
vec2.data_[0]; data_[1] /=
vec2.data_[1];;
102 template <
typename T>
103 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator=(
const Vector<T, 2> &
vec2)
109 template <
typename T>
110 DYN_FUNC
bool Vector<T, 2>::operator== (
const Vector<T, 2> &
vec2)
const
112 return data_ ==
vec2.data_;
115 template <
typename T>
116 DYN_FUNC
bool Vector<T, 2>::operator!= (
const Vector<T, 2> &
vec2)
const
118 return !((*this) ==
vec2);
121 template <
typename T>
122 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator+(
T value)
const
124 return Vector<T, 2>(*
this) += value;
128 template <
typename T>
129 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator+= (
T value)
135 template <
typename T>
136 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator-(
T value)
const
138 return Vector<T, 2>(*
this) -= value;
141 template <
typename T>
142 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator-= (
T value)
148 template <
typename T>
149 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator* (
T scale)
const
151 return Vector<T, 2>(*
this) *=
scale;
154 template <
typename T>
155 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator*= (
T scale)
161 template <
typename T>
162 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator/ (
T scale)
const
164 return Vector<T, 2>(*
this) /=
scale;
167 template <
typename T>
168 DYN_FUNC Vector<T, 2>& Vector<T, 2>::operator/= (
T scale)
174 template <
typename T>
175 DYN_FUNC
const Vector<T, 2> Vector<T, 2>::operator-(
void)
const
182 template <
typename T>
183 DYN_FUNC
T Vector<T, 2>::norm()
const
185 return glm::length(data_);
188 template <
typename T>
189 DYN_FUNC
T Vector<T, 2>::normSquared()
const
191 return glm::length2(data_);
194 template <
typename T>
195 DYN_FUNC Vector<T, 2>& Vector<T, 2>::normalize()
197 data_ = glm::length(data_) > glm::epsilon<T>() ? glm::normalize(data_) : glm::tvec2<
T>(0, 0);
201 template <
typename T>
202 DYN_FUNC
T Vector<T, 2>::cross(
const Vector<T, 2>&
vec2)
const
204 return (*
this)[0] *
vec2[1] - (*this)[1] *
vec2[0];
207 template <
typename T>
208 DYN_FUNC
T Vector<T, 2>::dot(
const Vector<T, 2>&
vec2)
const
210 return glm::dot(data_,
vec2.data_);
213 template <
typename T>
214 DYN_FUNC Vector<T, 2> Vector<T, 2>::minimum(
const Vector<T, 2> &
vec2)
const
217 res[0] = data_[0] <
vec2[0] ? data_[0] :
vec2[0];
218 res[1] = data_[1] <
vec2[1] ? data_[1] :
vec2[1];
222 template <
typename T>
223 DYN_FUNC Vector<T, 2> Vector<T, 2>::maximum(
const Vector<T, 2> &
vec2)
const
226 res[0] = data_[0] >
vec2[0] ? data_[0] :
vec2[0];
227 res[1] = data_[1] >
vec2[1] ? data_[1] :
vec2[1];
232 template <
typename S,
typename T>
235 return vec * (
T)scale;
This is an implementation of AdditiveCCD based on peridyno.
TEMPLATE_TYPENAME_T MAT4_T scale(MAT4_T const &m, VEC3_T const &v)