afVec3n.h
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:1k
源码类别:

其他游戏

开发平台:

Visual C++

  1. #ifndef AF_VEC3N
  2. #define AF_VEC3N
  3. #include "afVec3.h"
  4. /// 3D normalized vector class
  5. class afVec3n : public afVec3
  6. {
  7. public:
  8. bool valid;
  9. //constructors
  10. afVec3n()  { x=y=0.0f;z=1.0f; valid = true; }
  11.     afVec3n(float nX, float nY, float nZ)  { set(nX,nY,nZ); }
  12. afVec3n(const afVec3n& tocopy)  { *this = tocopy;}
  13. afVec3n(const afVec3& tocopy, bool nNormaize=true)  { if(nNormaize) set(tocopy.x,tocopy.y,tocopy.z); else setNoNorm(tocopy.x,tocopy.y,tocopy.z); }
  14. bool
  15. isValid() const  { return valid; }
  16. void 
  17. set(float nX, float nY, float nZ);
  18. // setNoNorm lets you specify a unit vector
  19. // without normalization
  20. void
  21. setNoNorm(float nX, float nY, float nZ)  {  x = nX;  y = nY;  z = nZ;  valid = true;  }
  22. inline afVec3n& 
  23. operator=(const afVec3n&);
  24. const afVec3n&
  25. getDifferentVector() const;
  26. //standard vectors
  27. static afVec3n ORIGIN;
  28. static afVec3n FRONT;
  29. static afVec3n BACK;
  30. static afVec3n LEFT;
  31. static afVec3n RIGHT;
  32. static afVec3n UP;
  33. static afVec3n DOWN;
  34. };
  35. typedef afVec3n *afVec3nPtr;
  36. inline afVec3n&
  37. afVec3n::operator=(const afVec3n& other)
  38. {
  39. x = other.x;
  40. y = other.y;
  41. z = other.z;
  42. valid = other.valid;
  43. return *this;
  44. }
  45. #endif