Advertisement
Guest User

Untitled

a guest
Feb 1st, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. bool Map::ClipToView(vert &start, vert &end, float &uStart, float &uEnd) {
  2.     positionVec2 const left{-1.f/hfovMult,1};
  3.     positionVec2 const right{1.f/hfovMult,1};
  4.  
  5.     auto q = end - start;
  6.     auto qu = uEnd - uStart;
  7.     auto t = cross(right, start) / cross(q, right);
  8.     if( t > 0 && t < 1) {
  9.         if(cross(right, start) > 0 ) {
  10.             end = start + t * q;
  11.             uEnd = uStart + t * qu;
  12.         } else {
  13.             start = start + t * q;
  14.             uStart = uStart + t * qu;
  15.         }
  16.     } else if(cross(right, start) < 0 && cross(right, end) < 0) {
  17.         return false;
  18.     }
  19.  
  20.     t = cross(left, start) / cross(q, left);
  21.     if( t > 0 && t < 1) {
  22.         if(cross(left, start) > 0 ) {
  23.             start = start + t * q;
  24.             uStart = uStart + t * qu;
  25.         } else {
  26.             end = start + t * q;
  27.             uEnd = uStart + t * qu;
  28.         }
  29.     } else if(cross(left, start) > 0 && cross(left, end) > 0) {
  30.         return false;
  31.     }
  32.     /* ... */
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement