CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/UtilityTools/FindPath/FindPath_AStar.h
浏览该文件的文档。
00001 # i f n d e f   H G L _ A S T A R _ F I N D P A T H _ I N C L U D E 
00002  
00003  # d e f i n e   H G L _ A S T A R _ F I N D P A T H _ I N C L U D E 
00004  
00005  
00006  
00007  # i n c l u d e < h g l / t y p e / L i s t . H > 
00008  
00009  # i n c l u d e < h g l / u t / F i n d P a t h . H > 
00010  
00011  # i n c l u d e < m a t h . h > 
00012  
00013  n a m e s p a c e   h g l 
00014  
00015  { 
00016  
00017      n a m e s p a c e   f i n d p a t h 
00018  
00019      { 
00020  
00021          s t r u c t   F i n d I t e m 
00022  
00023          { 
00024  
00025              F i n d I t e m   * p r e v ; 
00026  
00027  
00028  
00029              L i s t < F i n d I t e m   * >   s u b ; 
00030  
00031  
00032  
00033              i n t   x , y ; 
00034  
00035              i n t   s t e p ; 
00036  
00037  
00038  
00039              f l o a t   l e n g t h ; 
00040  
00041  
00042  
00043              F i n d I t e m ( ) 
00044  
00045              { 
00046  
00047                  p r e v = N U L L ; 
00048  
00049                  x = - 1 ; 
00050  
00051                  y = - 1 ; 
00052  
00053                  s t e p = - 1 ; 
00054  
00055                  l e n g t h = - 1 ; 
00056  
00057              } 
00058  
00059  
00060  
00061              v o i d   S e t ( F i n d I t e m   * p , i n t   c x , i n t   c y , f l o a t   l e n ) 
00062  
00063              { 
00064  
00065                  p r e v = p ; 
00066  
00067  
00068  
00069                  s u b . C l e a r D a t a ( ) ; 
00070  
00071  
00072  
00073                  x = c x ; 
00074  
00075                  y = c y ; 
00076  
00077  
00078  
00079                  i f ( p ) 
00080  
00081                      s t e p = p - > s t e p + 1 ; 
00082  
00083                  e l s e 
00084  
00085                      s t e p = 0 ; 
00086  
00087  
00088  
00089                  l e n g t h = l e n ; 
00090  
00091              } 
00092  
00093          } ; 
00094  
00095  
00096  
00097          c l a s s   A S t a r F i n d P a t h : p u b l i c   F i n d P a t h 
00098  
00099          { 
00100  
00101          p r i v a t e : 
00102  
00103  
00104  
00105              F i n d I t e m   * * * f i n d ;               / / hNk N*N<hP[
00106 Nvg~by(uNh]~gǏN
00107  
00108  
00109  
00110              L i s t < F i n d I t e m   * >   f i n d l i s t ;         / / g~bvR
00111  
00112              / / f i n d l i s t   /fNSOHQv͑p1uN(Wk!kg~b-N R`vte'Y\͑RMQ[\O9'YϑC P U e0
00113  
00114              / /  g:Nt`ve_/ffbc:Nh
00115  
00116  
00117  
00118              F i n d I t e m   * f i n d _ b u f f e r ;             / / >eeQ~gR(uvpenccMRRMNcGSHe
00119  
00120              i n t   f i n d _ b u f f e r _ i n d e x ;             / / Q"}_
00121  
00122  
00123  
00124          p r i v a t e : 
00125  
00126  
00127  
00128              _ _ i n l i n e   b o o l   c h e c k p o i n t ( i n t   x , i n t   y , i n t   p x , i n t   p y ) 
00129  
00130              { 
00131  
00132                  r e t u r n   C a l l E v e n t ( C h e c k P o i n t , ( x , y , p x , p y ) ) ; 
00133  
00134              } 
00135  
00136  
00137  
00138              _ _ i n l i n e   f l o a t   c o m p _ l e n g t h ( i n t   x , i n t   y ) 
00139  
00140              { 
00141  
00142                  / / r e t u r n   s q r t ( ( E n d X - x ) * ( E n d X - x ) + ( E n d Y - y ) * ( E n d Y - y ) ) ; 
00143  
00144                  / / r e t u r n   ( E n d X - x ) * ( E n d X - x ) + ( E n d Y - y ) * ( E n d Y - y ) ; 
00145  
00146                  r e t u r n   a b s ( f l o a t ( E n d X - x ) ) + f a b s ( f l o a t ( E n d Y - y ) ) ; 
00147  
00148              } 
00149  
00150  
00151  
00152              _ _ i n l i n e   F i n d I t e m   * G e t I t e m ( F i n d I t e m   * p , i n t   c x , i n t   c y , f l o a t   l e n ) 
00153  
00154              { 
00155  
00156                  F i n d I t e m   * r e s u l t = f i n d _ b u f f e r + ( f i n d _ b u f f e r _ i n d e x + + ) ; 
00157  
00158  
00159  
00160                  r e s u l t - > S e t ( p , c x , c y , l e n ) ; 
00161  
00162  
00163  
00164                  r e t u r n   r e s u l t ; 
00165  
00166              } 
00167  
00168  
00169  
00170              v o i d   c l e a r ( ) ; 
00171  
00172  
00173  
00174              F i n d I t e m   * i n s e r t ( F i n d I t e m   * p f d , i n t   x , i n t   y ) ; 
00175  
00176  
00177  
00178              v i r t u a l   v o i d   c r e a t e _ s u b ( i n t   x , i n t   y , i n t   p x , i n t   p y , S t e p L i s t   & ) = 0 ; 
00179  
00180  
00181  
00182              b o o l   f i n d _ p a t h ( ) ; 
00183  
00184  
00185  
00186          p u b l i c : 
00187  
00188  
00189  
00190              A S t a r F i n d P a t h ( i n t , i n t ) ; 
00191  
00192              ~ A S t a r F i n d P a t h ( ) ; 
00193  
00194  
00195  
00196              v o i d   I n i t ( ) ; 
00197  
00198          } ; 
00199  
00200      } / / n a m e s p a c e   f i n d p a t h 
00201  
00202  } / / n a m e s p a c e   h g l 
00203  
00204  # e n d i f / / H G L _ A S T A R _ F I N D P A T H _ I N C L U D E 
00205  
00206  
00207  
00208  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义