SDC C-Project CF Review 프로그램
LYW
2021-07-27 281a73558e8d437fc778b390281560fa2e7a0e5e
ReviewHistory/include/akSTL/inl/akVectorT.inl
»õ ÆÄÀÏ
@@ -0,0 +1,109 @@
//#include "../akvectorT.h"
#define AKINLINE inline
template<typename T> AKINLINE
CakVectorT<T> CakVectorT<T>::operator-( CakVectorT<T> vector ) const throw()
{
   return CakVectorT(x - vector.x, y - vector.y, z - vector.z);
}
template<typename T> AKINLINE
CakVectorT<T> CakVectorT<T>::operator+( CakVectorT<T> vector ) const throw()
{
   return CakVectorT(x + vector.x, y + vector.y, z + vector.z);
}
template<typename T> AKINLINE
CakVectorT<T> CakVectorT<T>::operator-() const throw()
{
   return CakVectorT(-x,-y,-z);
}
template<typename T> AKINLINE
void CakVectorT<T>::operator-=( CakVectorT<T> vector ) throw()
{
   x -= vector.x;
   y -= vector.y;
   z -= vector.z;
}
template<typename T> AKINLINE
void CakVectorT<T>::operator+=( CakVectorT<T> vector ) throw()
{
   x += vector.x;
   y += vector.y;
   z += vector.z;
}
template<typename T> AKINLINE
bool CakVectorT<T>::operator!=( CakVectorT<T> vector ) const throw()
{
   return (x != vector.x || y != vector.y || z != vector.z);
}
template<typename T> AKINLINE
bool CakVectorT<T>::operator==( CakVectorT<T> vector ) const throw()
{
   return (x == vector.x && y == vector.y && z == vector.z);
}
template<typename T> AKINLINE
void CakVectorT<T>::set( T X, T Y, T Z ) throw()
{
   x = X;
   y = Y;
   z = Z;
}
template<typename T> AKINLINE
void CakVectorT<T>::Offset( CakVectorT<T> vector ) throw()
{
   x += vector.x;
   y += vector.y;
   z += vector.z;
}
template<typename T> AKINLINE
void CakVectorT<T>::Offset( T xOffset, T yOffset, T zOffset) throw()
{
   x += xOffset;
   y += yOffset;
   z += zOffset;
}
template<typename T> AKINLINE
CakVectorT<T> CakVectorT<T>::operator*(T& a) const throw()
{
   return CakVectorT(x * a, y * a, z * a);
}
template<typename T> AKINLINE
CakVectorT<T> CakVectorT<T>::operator*( CakVectorT<T> &vec ) const throw()
{
   CakVectorT<T> vc;
   vc.x = y*vec.z - z*vec.y;
   vc.y = z*vec.x - x*vec.z;
   vc.z = x*vec.y - y*vec.x;
   return vc;
};
template<typename T> AKINLINE
void CakVectorT<T>::Normalize()
{
   double length;
   //벡터의 ê¸¸ì´ë¥¼ ê³„산한다.
   length = sqrt((x*x) + (y*y) +(z*z));
   // ê¸¸ì´ê°€ 0에 ê°€ê¹Œìš´ ë²¡í„°ì—ê²Œ ì ˆì ˆí•œ ê°’을 í•­ë‹¹í•˜ì—¬ í”„로그램이 í­ì£¼í•˜ì§€ ì•Šë„록 í•œë‹¤.
   if(length == 0.0f) length = 1.0f;
   // ê° ì„±ë¶„을 ë²¡í„°ì˜ ê¸¸ì´ë¡œ ë‚˜ëˆ„ë©´ ë‹¨ìœ„ ë²¡í„°ê°€ ëœë‹¤.
   x = x / length;
   y = y / length;
   z = z / length;
}