»õ ÆÄÀÏ |
| | |
| | | #pragma once |
| | | |
| | | |
| | | #include "akLinker.h" |
| | | //#include "akSTLVector.h" |
| | | |
| | | //namespace akSTL |
| | | //{ |
| | | #include <vector> |
| | | |
| | | |
| | | |
| | | |
| | | template <typename T> |
| | | class CakTrajectory |
| | | { |
| | | public: |
| | | CakTrajectory(); |
| | | ~CakTrajectory(); |
| | | |
| | | |
| | | void clear(); //ë©ëª¨ë¦¬ ìì ë ìë¨ |
| | | void setMemSize(unsigned int memsize); //memsizeê° 0ì¼ë ë©ëª¨ë¦¬ ìì |
| | | |
| | | void pointAdd(T point); |
| | | void pointSet( unsigned int nindex , T point ); |
| | | void getPoints(T* pPointBuffer, unsigned int nBufferLength); |
| | | |
| | | int size(){return m_nPointNum;}; |
| | | T& operator [](unsigned int nindex); |
| | | CakTrajectory& operator= (CakTrajectory& traj); |
| | | |
| | | static unsigned int s_TrajectorySize; |
| | | |
| | | |
| | | //ê°ë¥íë©´ ìëì ë©¤ë² ë³ìì ì§ì ìì ì íì§ ë§ê²!! |
| | | public: |
| | | int m_nMemSize; //íë³´ ë©ëª¨ë¦¬ ì¬ì´ì¦ |
| | | int m_nPointIndex; //íì¬ ì¸ë±ì¤ |
| | | int m_nPointNum; //íì¬ ì
ë ¥ë Point ê°¯ì |
| | | T* m_pPoints; //ë°ì´í° ë³ì |
| | | }; |
| | | |
| | | |
| | | |
| | | |
| | | //} |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | template <typename T> |
| | | unsigned int CakTrajectory<T>::s_TrajectorySize = 100; |
| | | |
| | | |
| | | template <typename T> |
| | | CakTrajectory<T>::CakTrajectory(void) |
| | | { |
| | | m_pPoints = NULL; |
| | | m_nMemSize = 0; |
| | | |
| | | clear(); |
| | | setMemSize(s_TrajectorySize); |
| | | }; |
| | | |
| | | |
| | | template <typename T> |
| | | CakTrajectory<T>::~CakTrajectory(void) |
| | | { |
| | | setMemSize(0); |
| | | }; |
| | | |
| | | template <typename T> |
| | | void CakTrajectory<T>::clear() //ë©ëª¨ë¦¬ ìì ë ìë¨ |
| | | { |
| | | m_nMemSize; //íë³´ ë©ëª¨ë¦¬ ì¬ì´ì¦ |
| | | m_nPointIndex = -1; //íì¬ ì¸ë±ì¤ |
| | | m_nPointNum = 0; //íì¬ ì
ë ¥ë Point ê°¯ì |
| | | //m_pPoints; //ë°ì´í° ë³ì |
| | | } |
| | | |
| | | template <typename T> |
| | | void CakTrajectory<T>::setMemSize(unsigned int memsize) //memsizeê° 0ì¼ë ë©ëª¨ë¦¬ ìì |
| | | { |
| | | //clear |
| | | if(m_pPoints != NULL) |
| | | { |
| | | clear(); |
| | | m_nMemSize = 0; |
| | | delete [] m_pPoints; |
| | | m_pPoints = NULL; |
| | | } |
| | | |
| | | if(memsize > 0) |
| | | { |
| | | m_nMemSize = memsize; |
| | | |
| | | m_pPoints = new T [m_nMemSize]; |
| | | } |
| | | |
| | | } |
| | | |
| | | template <typename T> |
| | | void CakTrajectory<T>::pointAdd(T point) |
| | | { |
| | | m_nPointIndex++; |
| | | if(m_nPointIndex >= m_nMemSize) |
| | | { |
| | | m_nPointIndex = 0; |
| | | } |
| | | |
| | | m_nPointNum++; |
| | | if(m_nPointNum >= m_nMemSize) |
| | | { |
| | | m_nPointNum = m_nMemSize; |
| | | } |
| | | |
| | | m_pPoints[m_nPointIndex] = point; |
| | | } |
| | | |
| | | template <typename T> |
| | | void CakTrajectory<T>::pointSet( unsigned int nindex , T point ) |
| | | { |
| | | int pointindex = m_nPointIndex-nindex; |
| | | |
| | | if(pointindex<0) pointindex = m_nPointNum + pointindex; |
| | | |
| | | m_pPoints[pointindex] = point; |
| | | } |
| | | |
| | | template <typename T> |
| | | T& CakTrajectory<T>::operator[]( unsigned int nindex ) |
| | | { |
| | | int pointindex = m_nPointIndex-nindex; |
| | | |
| | | if(pointindex<0) pointindex = m_nPointNum + pointindex; |
| | | |
| | | return m_pPoints[pointindex]; |
| | | } |
| | | |
| | | template <typename T> |
| | | CakTrajectory<T>& CakTrajectory<T>::operator=( CakTrajectory<T>& traj ) |
| | | { |
| | | if(m_nMemSize != traj.m_nMemSize) |
| | | { |
| | | if(m_pPoints) |
| | | { |
| | | delete [] m_pPoints; |
| | | } |
| | | |
| | | m_pPoints = new T[traj.m_nMemSize]; |
| | | } |
| | | |
| | | |
| | | m_nMemSize = traj.m_nMemSize; |
| | | m_nPointIndex = traj.m_nPointIndex; |
| | | m_nPointNum = traj.m_nPointNum; |
| | | |
| | | memcpy(m_pPoints, traj.m_pPoints, sizeof(khVector3d)*traj.m_nMemSize); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | return *this; |
| | | } |