Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Map::ClipToView(vert &start, vert &end, float &uStart, float &uEnd) {
- positionVec2 const left{-1.f/hfovMult,1};
- positionVec2 const right{1.f/hfovMult,1};
- auto q = end - start;
- auto qu = uEnd - uStart;
- auto t = cross(right, start) / cross(q, right);
- if( t > 0 && t < 1) {
- if(cross(right, start) > 0 ) {
- end = start + t * q;
- uEnd = uStart + t * qu;
- } else {
- start = start + t * q;
- uStart = uStart + t * qu;
- }
- } else if(cross(right, start) < 0 && cross(right, end) < 0) {
- return false;
- }
- t = cross(left, start) / cross(q, left);
- if( t > 0 && t < 1) {
- if(cross(left, start) > 0 ) {
- start = start + t * q;
- uStart = uStart + t * qu;
- } else {
- end = start + t * q;
- uEnd = uStart + t * qu;
- }
- } else if(cross(left, start) > 0 && cross(left, end) > 0) {
- return false;
- }
- /* ... */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement