32 template <u
int32_t Size,
typename Type>
46 template <u
int32_t Size,
typename Type>
62 template <u
int32_t Size,
typename Type>
74 template <u
int32_t Size,
typename Type>
83 template <u
int32_t Size,
typename Type>
86 std::memcpy(m_tElements, vector.m_tElements,
sizeof(Type) * Size);
98 template <u
int32_t Size,
typename Type>
99 template <
typename CastType>
102 for(uint32_t ct = 0; ct < Size; ++ct)
104 m_tElements[ct] =
static_cast<Type
>(vector.
getElement(ct));
111 template <u
int32_t Size,
typename Type>
121 template <u
int32_t Size,
typename Type>
128 std::memcpy(m_tElements, rhs.m_tElements,
sizeof(Type) * Size);
138 template <u
int32_t Size,
typename Type>
142 for(uint32_t ct = 0; ct < Size; ++ct)
144 if(m_tElements[ct] != rhs.m_tElements[ct])
159 template <u
int32_t Size,
typename Type>
162 return !(*
this == rhs);
172 template <u
int32_t Size,
typename Type>
175 for(uint32_t ct = 0; ct < Size; ++ct)
177 if (m_tElements[ct] < rhs.m_tElements[ct])
179 if (rhs.m_tElements[ct] < m_tElements[ct])
190 template <u
int32_t Size,
typename Type>
193 for(uint32_t ct = 0; ct < Size; ++ct)
195 m_tElements[ct] += rhs.m_tElements[ct];
205 template <u
int32_t Size,
typename Type>
208 for(uint32_t ct = 0; ct < Size; ++ct)
210 m_tElements[ct] -= rhs.m_tElements[ct];
220 template <u
int32_t Size,
typename Type>
223 for(uint32_t ct = 0; ct < Size; ++ct)
225 m_tElements[ct] *= rhs.m_tElements[ct];
235 template <u
int32_t Size,
typename Type>
238 for(uint32_t ct = 0; ct < Size; ++ct)
240 m_tElements[ct] /= rhs.m_tElements[ct];
250 template <u
int32_t Size,
typename Type>
253 for(uint32_t ct = 0; ct < Size; ++ct)
255 m_tElements[ct] *= rhs;
265 template <u
int32_t Size,
typename Type>
268 for(uint32_t ct = 0; ct < Size; ++ct)
270 m_tElements[ct] /= rhs;
281 template <u
int32_t Size,
typename Type>
295 template <u
int32_t Size,
typename Type>
309 template <u
int32_t Size,
typename Type>
323 template <u
int32_t Size,
typename Type>
337 template <u
int32_t Size,
typename Type>
351 template <u
int32_t Size,
typename Type>
365 template <u
int32_t Size,
typename Type>
366 std::ostream& operator<<(std::ostream& os, const Vector<Size, Type>& vector)
369 for(uint32_t ct = 0; ct < Size; ++ct)
386 template <u
int32_t Size,
typename Type>
389 return m_tElements[index];
395 template <u
int32_t Size,
typename Type>
398 return m_tElements[0];
404 template <u
int32_t Size,
typename Type>
407 return m_tElements[1];
413 template <u
int32_t Size,
typename Type>
416 return m_tElements[2];
422 template <u
int32_t Size,
typename Type>
425 return m_tElements[3];
432 template <u
int32_t Size,
typename Type>
435 m_tElements[index] = tValue;
443 template <u
int32_t Size,
typename Type>
457 template <u
int32_t Size,
typename Type>
473 template <u
int32_t Size,
typename Type>
485 template <u
int32_t Size,
typename Type>
494 template <u
int32_t Size,
typename Type>
503 template <u
int32_t Size,
typename Type>
512 template <u
int32_t Size,
typename Type>
522 template <u
int32_t Size,
typename Type>
525 return sqrt(lengthSquared());
531 template <u
int32_t Size,
typename Type>
534 double result = 0.0f;
535 for(uint32_t ct = 0; ct < Size; ++ct)
537 result += m_tElements[ct] * m_tElements[ct];
551 template <u
int32_t Size,
typename Type>
554 return acos(dot(vector) / (vector.
length() * this->length()));
569 template <u
int32_t Size,
typename Type>
572 Type i = vector.
getZ() * this->getY() - vector.
getY() * this->getZ();
573 Type j = vector.
getX() * this->getZ() - vector.
getZ() * this->getX();
574 Type k = vector.
getY() * this->getX() - vector.
getX() * this->getY();
585 template <u
int32_t Size,
typename Type>
588 Type dotProduct =
static_cast<Type
>(0);
589 for(uint32_t ct = 0; ct < Size; ++ct)
591 dotProduct += m_tElements[ct] * rhs.m_tElements[ct];
601 template <u
int32_t Size,
typename Type>
604 Type tLength =
static_cast<Type
>(this->length());
606 if(tLength < 0.0001f)
610 for(uint32_t ct = 0; ct < Size; ++ct)
612 m_tElements[ct] /= tLength;