Advertisement
Guest User

Untitled

a guest
May 26th, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.58 KB | None | 0 0
  1. bool AABB::rayTest(const float3 &pos, const float3 &tan) const{
  2.    
  3.    float in = 0.f, out = 1.f;
  4.    
  5.    for(unsigned char i = 0; i < 3; ++i){
  6.      
  7.       if(tan[i] == 0){
  8.            
  9.          if(pos[i] < min[i] || pos[i] > max[i]) return(false);
  10.            
  11.       }else{
  12.  
  13.          const float r    = 1.f / tan[i];
  14.          float       minD = (min[i] - pos[i]) * r;
  15.          float       maxD = (max[i] - pos[i]) * r;
  16.              
  17.          if(minD > maxD) swap(minD, maxD);
  18.              
  19.          if(minD > in) in = minD;
  20.          if(maxD < out) out = maxD;
  21.  
  22.          if(in > out) return(false);
  23.       }
  24.    }
  25.    
  26.    return(true);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement