CMGDK r49-rc2
|
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