Guest User

Untitled

a guest
Apr 12th, 2012
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.63 KB | None | 0 0
  1.  
  2. bool CBBox::Intersect(const CRay &rRay, float *fMin, float *fMax) const
  3. {
  4.     float fEnter = 0.0f;
  5.     float fExit = INFINITY;
  6.  
  7.     for(unsigned int i = 0; i < 3; i++)
  8.     {
  9.         float fNear = (vMin[i] - rRay.vOrigin[i]) * rRay.vInvDirection[i];
  10.         float fFar = (vMax[i] - rRay.vOrigin[i]) * rRay.vInvDirection[i];
  11.  
  12.         if(fNear > fFar)
  13.         {
  14.             float fTemp = fNear;
  15.             fNear = fFar;
  16.             fFar = fTemp;
  17.         }
  18.  
  19.         fEnter = fNear > fEnter ? fNear : fEnter;
  20.         fExit = fFar < fExit ? fFar : fExit;
  21.  
  22.         if(fEnter > fExit)
  23.         {
  24.             return false;
  25.         }
  26.     }
  27.  
  28.     if(fMin)
  29.     {
  30.         *fMin = fEnter;
  31.     }
  32.    
  33.     if(fMax)
  34.     {
  35.         *fMax = fExit;
  36.     }
  37.  
  38.     return true;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment