Advertisement
Guest User

Untitled

a guest
Oct 7th, 2013
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.39 KB | None | 0 0
  1. bool static extentSignedTest(const Vector4f& p, const Vector3f& center, const Vector3f& extent)
  2. {
  3.         return (dot(Vector3(p), center) + dot(abs(Vector3(p)), extent) < -p.w);
  4. }
  5.  
  6. bool static isAABBInFrustumReference (const AABB& box, const Matrix44& frustumMatrix)
  7. {                      
  8.         const Vector4f  rowX                    = frustumMatrix.getRow(0);
  9.         const Vector4f  rowY                    = frustumMatrix.getRow(1);
  10.         const Vector4f  rowZ                    = frustumMatrix.getRow(2);
  11.         const Vector4f  rowW                    = frustumMatrix.getRow(3);
  12.        
  13.         const Vector3f& center =  box.getCenter();
  14.         const Vector3f& extent =  box.getExtents();
  15.  
  16.         // Left and right planes              
  17.         if (extentSignedTest(rowW + rowX, center, extent))
  18.                 return false;
  19.  
  20.         if (extentSignedTest(rowW - rowX, center, extent))
  21.                 return false;
  22.  
  23.         // Bottom and top planes
  24.         if (extentSignedTest(rowW + rowY, center, extent))
  25.                 return false;
  26.  
  27.         if (extentSignedTest(rowW - rowY, center, extent))
  28.                 return false;
  29.        
  30.         // Near and far planes
  31.         if (extentSignedTest(rowW + rowZ, center, extent))
  32.                 return false;
  33.  
  34.         if (extentSignedTest(rowW - rowZ, center, extent))
  35.                 return false;
  36.  
  37.         return true;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement