CMGDK r49-rc2
K:/CMGDKv18/SDK/Include/hgl/VectorMath.H
浏览该文件的文档。
00001 # i f n d e f   H G L _ V E C T O R _ M A T H _ I N C L U D E 
00002  
00003  # d e f i n e   H G L _ V E C T O R _ M A T H _ I N C L U D E 
00004  
00005  
00006  
00007  # i f d e f   _ M S C _ V E R 
00008  
00009  # p r a g m a   w a r n i n g ( d i s a b l e : 4 2 4 4 )           / /   d o u b l e   - >   i n t   |^"N1YfJT
00010  
00011  # e n d i f / / _ M S C _ V E R 
00012  
00013  
00014  
00015  # i n c l u d e < h g l / t y p e / D a t a T y p e . H > 
00016  
00017  # i n c l u d e < c m l / c m l . h > 
00018  
00019  
00020  
00021  n a m e s p a c e   h g l 
00022  
00023  { 
00024  
00025      t y p e d e f   c m l : : v e c t o r 2 i   V e c t o r 2 i ; 
00026  
00027      t y p e d e f   c m l : : v e c t o r 3 i   V e c t o r 3 i ; 
00028  
00029      t y p e d e f   c m l : : v e c t o r 4 i   V e c t o r 4 i ; 
00030  
00031  
00032  
00033      t y p e d e f   c m l : : v e c t o r 2 f   V e c t o r 2 f ; 
00034  
00035      t y p e d e f   c m l : : v e c t o r 3 f   V e c t o r 3 f ; 
00036  
00037      t y p e d e f   c m l : : v e c t o r 4 f   V e c t o r 4 f ; 
00038  
00039  
00040  
00041      t y p e d e f   c m l : : m a t r i x 3 3 f _ c   M a t r i x 3 f ; 
00042  
00043      t y p e d e f   c m l : : m a t r i x 4 4 f _ c   M a t r i x 4 f ; 
00044  
00045  
00046  
00047      i n l i n e   M a t r i x 4 f   i d e n t i t y ( ) 
00048  
00049      { 
00050  
00051          r e t u r n   c m l : : i d e n t i t y _ 4 x 4 ( ) ; 
00052  
00053      } 
00054  
00055  
00056  
00057      i n l i n e   M a t r i x 4 f   i n v e r s e ( c o n s t   M a t r i x 4 f   & m ) 
00058  
00059      { 
00060  
00061          r e t u r n   c m l : : i n v e r s e ( m ) ; 
00062  
00063      } 
00064  
00065  
00066  
00067      i n l i n e   M a t r i x 4 f   p e r s p e c t i v e ( f l o a t   f o v y , f l o a t   a s p e c t , f l o a t   z n e a r , f l o a t   z f a r ) 
00068  
00069      { 
00070  
00071          M a t r i x 4 f   r e s u l t ; 
00072  
00073  
00074  
00075          c m l : : m a t r i x _ p e r s p e c t i v e _ y f o v _ R H ( r e s u l t , f o v y , a s p e c t , z n e a r , z f a r , c m l : : z _ c l i p _ n e g _ o n e ) ; 
00076  
00077  
00078  
00079          r e t u r n   r e s u l t ; 
00080  
00081      } 
00082  
00083  
00084  
00085      i n l i n e   M a t r i x 4 f   o r t h o 2 ( f l o a t   w i d t h , f l o a t   h e i g h t , f l o a t   z n e a r = 0 , f l o a t   z f a r = 1 ) 
00086  
00087      { 
00088  
00089          M a t r i x 4 f   r e s u l t ; 
00090  
00091  
00092  
00093          c m l : : m a t r i x _ o r t h o g r a p h i c _ L H ( r e s u l t , 0 . 0 f , w i d t h , h e i g h t , 0 . 0 f , z n e a r , z f a r , c m l : : z _ c l i p _ n e g _ o n e ) ; 
00094  
00095  
00096  
00097          / / C M L  g N*NS Ow i d t h , h e i g h t , FO~gN@bggv
00098 N N7h
00099  
00100  
00101  
00102          r e t u r n   r e s u l t ; 
00103  
00104      } 
00105  
00106  
00107  
00108      i n l i n e   M a t r i x 4 f   o r t h o 4 ( f l o a t   l e f t , f l o a t   r i g h t , f l o a t   b o t t o m , f l o a t   t o p , f l o a t   z n e a r = 0 , f l o a t   z f a r = 1 ) 
00109  
00110      { 
00111  
00112          M a t r i x 4 f   r e s u l t ; 
00113  
00114  
00115  
00116          c m l : : m a t r i x _ o r t h o g r a p h i c _ R H ( r e s u l t , l e f t , r i g h t , b o t t o m , t o p , z n e a r , z f a r , c m l : : z _ c l i p _ n e g _ o n e ) ; 
00117  
00118  
00119  
00120          r e t u r n   r e s u l t ; 
00121  
00122      } 
00123  
00124  
00125  
00126      i n l i n e   M a t r i x 4 f   l o o k A t ( c o n s t   c m l : : v e c t o r 3 f   & e y e , c o n s t   c m l : : v e c t o r 3 f   & t a r g e t , c o n s t   c m l : : v e c t o r 3 f   & u p ) 
00127  
00128      { 
00129  
00130          M a t r i x 4 f   r e s u l t ; 
00131  
00132  
00133  
00134          c m l : : m a t r i x _ l o o k _ a t _ R H ( r e s u l t , e y e , t a r g e t , u p ) ; 
00135  
00136  
00137  
00138          r e t u r n   r e s u l t ; 
00139  
00140      } 
00141  
00142  
00143  
00144      i n l i n e   M a t r i x 4 f   t r a n s l a t e ( c o n s t   c m l : : v e c t o r 3 f   & v ) 
00145  
00146      { 
00147  
00148          M a t r i x 4 f   r e s u l t ; 
00149  
00150  
00151  
00152          c m l : : m a t r i x _ t r a n s l a t i o n ( r e s u l t , v ) ; 
00153  
00154  
00155  
00156          r e t u r n   r e s u l t ; 
00157  
00158      } 
00159  
00160  
00161  
00162      i n l i n e   M a t r i x 4 f   t r a n s l a t e ( f l o a t   x , f l o a t   y , f l o a t   z ) 
00163  
00164      { 
00165  
00166          M a t r i x 4 f   r e s u l t ; 
00167  
00168  
00169  
00170          c m l : : m a t r i x _ t r a n s l a t i o n ( r e s u l t , x , y , z ) ; 
00171  
00172  
00173  
00174          r e t u r n   r e s u l t ; 
00175  
00176      } 
00177  
00178  
00179  
00180      i n l i n e   M a t r i x 4 f   s c a l e ( c o n s t   c m l : : v e c t o r 3 f   & v ) 
00181  
00182      { 
00183  
00184          M a t r i x 4 f   r e s u l t ; 
00185  
00186  
00187  
00188          c m l : : m a t r i x _ s c a l e ( r e s u l t , v ) ; 
00189  
00190  
00191  
00192          r e t u r n   r e s u l t ; 
00193  
00194      } 
00195  
00196  
00197  
00198      i n l i n e   M a t r i x 4 f   s c a l e ( f l o a t   x , f l o a t   y , f l o a t   z ) 
00199  
00200      { 
00201  
00202          M a t r i x 4 f   r e s u l t ; 
00203  
00204  
00205  
00206          c m l : : m a t r i x _ s c a l e ( r e s u l t , x , y , z ) ; 
00207  
00208  
00209  
00210          r e t u r n   r e s u l t ; 
00211  
00212      } 
00213  
00214  
00215  
00216      i n l i n e   M a t r i x 4 f   s c a l e ( f l o a t   s ) 
00217  
00218      { 
00219  
00220          M a t r i x 4 f   r e s u l t ; 
00221  
00222  
00223  
00224          c m l : : m a t r i x _ s c a l e ( r e s u l t , s , s , s ) ; 
00225  
00226  
00227  
00228          r e t u r n   r e s u l t ; 
00229  
00230      } 
00231  
00232  
00233  
00234      i n l i n e   M a t r i x 4 f   r o t a t e ( f l o a t   a n g l e , c o n s t   c m l : : v e c t o r 3 f   & a x i s ) 
00235  
00236      { 
00237  
00238          M a t r i x 4 f   r e s u l t ; 
00239  
00240  
00241  
00242          c m l : : m a t r i x _ r o t a t i o n _ a x i s _ a n g l e ( r e s u l t , a x i s , f l o a t ( a n g l e * H G L _ P I / 1 8 0 . 0 f ) ) ; 
00243  
00244  
00245  
00246          r e t u r n   r e s u l t ; 
00247  
00248      } 
00249  
00250  
00251  
00252      i n l i n e   M a t r i x 4 f   r o t a t e ( f l o a t   a n g l e , f l o a t   x , f l o a t   y , f l o a t   z ) 
00253  
00254      {   
00255  
00256          r e t u r n   r o t a t e ( a n g l e , c m l : : v e c t o r 3 f ( x , y , z ) ) ; 
00257  
00258      } 
00259  
00260  
00261  
00262      i n l i n e   M a t r i x 4 f   r o t a t e ( f l o a t   a n g l e , c o n s t   c m l : : v e c t o r 4 f   & a x i s ) 
00263  
00264      { 
00265  
00266          r e t u r n   r o t a t e ( a n g l e , a x i s [ 0 ] , a x i s [ 1 ] , a x i s [ 2 ] ) ; 
00267  
00268      } 
00269  
00270  
00271  
00272      i n l i n e   c m l : : v e c t o r 3 f   n o r m a l i z e ( c o n s t   c m l : : v e c t o r 3 f   & v ) 
00273  
00274      { 
00275  
00276          r e t u r n   c m l : : n o r m a l i z e ( v ) ; 
00277  
00278      } 
00279  
00280  
00281  
00282      i n l i n e   c m l : : v e c t o r 3 f   c r o s s ( c o n s t   c m l : : v e c t o r 3 f   & v 1 , c o n s t   c m l : : v e c t o r 3 f   & v 2 ) 
00283  
00284      { 
00285  
00286          r e t u r n   c m l : : c r o s s ( v 1 , v 2 ) ; 
00287  
00288      } 
00289  
00290  
00291  
00292      i n l i n e   f l o a t   d o t ( c o n s t   c m l : : v e c t o r 3 f   & v 1 , c o n s t   c m l : : v e c t o r 3 f   & v 2 ) 
00293  
00294      { 
00295  
00296          r e t u r n   c m l : : d o t ( v 1 , v 2 ) ; 
00297  
00298      } 
00299  
00300  
00301  
00302      i n l i n e   f l o a t   l e n g t h _ s q u a r e d ( c o n s t   c m l : : v e c t o r 2 f   & v 1 , c o n s t   c m l : : v e c t o r 2 f   & v 2 ) 
00303  
00304      { 
00305  
00306          c o n s t   f l o a t   x = ( v 1 [ 0 ] - v 2 [ 0 ] ) ; 
00307  
00308          c o n s t   f l o a t   y = ( v 1 [ 1 ] - v 2 [ 1 ] ) ; 
00309  
00310  
00311  
00312          r e t u r n   x * x + y * y ; 
00313  
00314      } 
00315  
00316  
00317  
00318      i n l i n e   f l o a t   l e n g t h ( c o n s t   c m l : : v e c t o r 2 f   & v 1 , c o n s t   c m l : : v e c t o r 2 f   & v 2 ) 
00319  
00320      { 
00321  
00322          r e t u r n   s q r t ( l e n g t h _ s q u a r e d ( v 1 , v 2 ) ) ; 
00323  
00324      } 
00325  
00326  
00327  
00328      i n l i n e   f l o a t   l e n g t h _ s q u a r e d ( c o n s t   c m l : : v e c t o r 3 f   & v 1 , c o n s t   c m l : : v e c t o r 3 f   & v 2 ) 
00329  
00330      { 
00331  
00332          c o n s t   f l o a t   x = ( v 1 [ 0 ] - v 2 [ 0 ] ) ; 
00333  
00334          c o n s t   f l o a t   y = ( v 1 [ 1 ] - v 2 [ 1 ] ) ; 
00335  
00336          c o n s t   f l o a t   z = ( v 1 [ 2 ] - v 2 [ 2 ] ) ; 
00337  
00338  
00339  
00340          r e t u r n   x * x + y * y + z * z ; 
00341  
00342      } 
00343  
00344  
00345  
00346      i n l i n e   f l o a t   l e n g t h ( c o n s t   c m l : : v e c t o r 3 f   & v 1 , c o n s t   c m l : : v e c t o r 3 f   & v 2 ) 
00347  
00348      { 
00349  
00350          r e t u r n   s q r t ( l e n g t h _ s q u a r e d ( v 1 , v 2 ) ) ; 
00351  
00352      } 
00353  
00354  
00355  
00356      i n l i n e   c m l : : v e c t o r 2 f     t o ( c o n s t   c m l : : v e c t o r 2 f   & s t a r t , c o n s t   c m l : : v e c t o r 2 f   & e n d , f l o a t   p o s ) 
00357  
00358      { 
00359  
00360          r e t u r n   c m l : : v e c t o r 2 f ( s t a r t [ 0 ] + ( e n d [ 0 ] - s t a r t [ 0 ] ) * p o s 
00361  
00362                              , s t a r t [ 1 ] + ( e n d [ 1 ] - s t a r t [ 1 ] ) * p o s ) ; 
00363  
00364      } 
00365  
00366  
00367  
00368      i n l i n e   c m l : : v e c t o r 3 f     t o ( c o n s t   c m l : : v e c t o r 3 f   & s t a r t , c o n s t   c m l : : v e c t o r 3 f   & e n d , f l o a t   p o s ) 
00369  
00370      { 
00371  
00372          r e t u r n   c m l : : v e c t o r 3 f ( s t a r t [ 0 ] + ( e n d [ 0 ] - s t a r t [ 0 ] ) * p o s 
00373  
00374                              , s t a r t [ 1 ] + ( e n d [ 1 ] - s t a r t [ 1 ] ) * p o s 
00375  
00376                              , s t a r t [ 2 ] + ( e n d [ 2 ] - s t a r t [ 2 ] ) * p o s ) ; 
00377  
00378      } 
00379  
00380  } / / n a m e s p a c e   h g l 
00381  
00382  # e n d i f / / H G L _ V E C T O R _ M A T H _ I N C L U D E 
00383  
00384  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义