Path.h
上传用户:jxpjxmjjw
上传日期:2009-12-07
资源大小:5877k
文件大小:2k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. // Copyright (C) 2004 Team Python
  2. //  
  3. // This program is free software; you can redistribute it and/or modify
  4. // it under the terms of the GNU General Public License as published by
  5. // the Free Software Foundation; either version 2 of the License, or
  6. // (at your option) any later version.
  7. // 
  8. // This program is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. // GNU General Public License for more details.
  12. // 
  13. // You should have received a copy of the GNU General Public License
  14. // along with this program; if not, write to the Free Software 
  15. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  16. #ifndef WOWPYTHONSERVER_PATH_H
  17. #define WOWPYTHONSERVER_PATH_H
  18. #include "math.h"
  19. class Path {
  20. public:
  21.     struct PathNode {
  22.         float x,y,z;
  23.     };
  24.     Path( ): mNodes( 0 ), mLength( 0 ) { }
  25.     inline void setLength( const uint16 & length ) {
  26.         Clear( );
  27.         mLength = length; mNodes = new PathNode[ length ];
  28.     }
  29.     inline const uint16 & getLength( ) const { return mLength; };
  30.     inline PathNode * getNodes( ) { return mNodes; }
  31.     inline void Clear( ) { if( mNodes ) delete [ ] mNodes; mNodes = 0; }
  32.     float getTotalLength( ) {
  33.         float len = 0, xd, yd, zd;
  34.         for( uint32 a = 1; a < mLength; a ++ ) {
  35.             xd = mNodes[ a ].x - mNodes[ a-1 ].x;
  36.             yd = mNodes[ a ].y - mNodes[ a-1 ].y;
  37.             zd = mNodes[ a ].z - mNodes[ a-1 ].z;
  38.             len += (float)sqrt( xd * xd + yd*yd + zd*zd );
  39.         }
  40.         return len;
  41.     }
  42.     ~Path( ) { Clear( ); }
  43. protected:
  44.     PathNode * mNodes;
  45.     uint16 mLength;
  46. };
  47. #endif