Guest User

Untitled

a guest
Feb 20th, 2018
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. - (void) calculate
  2. {
  3.     GLfloat clip[16];
  4.     glGetFloatv(GL_PROJECTION_MATRIX, clip);
  5.  
  6.     top.n.x = clip[ 3] - clip[ 1];
  7.     top.n.y = clip[ 7] - clip[ 5];
  8.     top.n.z = clip[11] - clip[ 9];
  9.     top.d = clip[15] - clip[13];
  10.  
  11.     bottom.n.x = clip[ 3] + clip[ 1];
  12.     bottom.n.y = clip[ 7] + clip[ 5];
  13.     bottom.n.z = clip[11] + clip[ 9];
  14.     bottom.d = clip[15] + clip[13];
  15.  
  16.     left.n.x = clip[ 3] + clip[ 0];
  17.     left.n.y = clip[ 7] + clip[ 4];
  18.     left.n.z = clip[11] + clip[ 8];
  19.     left.d = clip[15] + clip[12];
  20.  
  21.     right.n.x = clip[ 3] - clip[ 0];
  22.     right.n.y = clip[ 7] - clip[ 4];
  23.     right.n.z = clip[11] - clip[ 8];
  24.     right.d = clip[15] - clip[12];
  25.        
  26.     front.n.x = clip[ 3] + clip[ 2];
  27.     front.n.y = clip[ 7] + clip[ 6];
  28.     front.n.z = clip[11] + clip[10];
  29.     front.d = clip[15] + clip[14];
  30.    
  31.     back.n.x = clip[ 3] - clip[ 2];
  32.     back.n.y = clip[ 7] - clip[ 6];
  33.     back.n.z = clip[11] - clip[10];
  34.     back.d = clip[15] - clip[14];
  35.    
  36.    
  37.     top.n = normalize(top.n);
  38.     bottom.n = normalize(bottom.n);
  39.     left.n = normalize(left.n);
  40.     right.n = normalize(right.n);
  41.     front.n = normalize(front.n);
  42.     back.n = normalize(back.n);
  43. }
  44.  
  45. - (bool) pointInFrustum: (vec3) p withRadius: (float) r
  46. {
  47.     float topDistance = dot(top.n, p) + top.d;
  48.     float bottomDistance = dot(bottom.n, p) + bottom.d;
  49.     float leftDistance = dot(left.n, p) + left.d;
  50.     float rightDistance = dot(right.n, p) + right.d;
  51.    
  52.     if(topDistance < 0) return false;
  53.     if(bottomDistance < 0) return false;
  54.     if(leftDistance < 0) return false;
  55.     if(rightDistance < 0) return false;
  56.     return true;
  57. }
Add Comment
Please, Sign In to add comment