Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. tri tr;
  2.             tr.v[0] = sf[i2];
  3.             tr.v[1] = sf[i1];
  4.             tr.v[2] = sf[i0];
  5.             bool vc[3] = {clipv[i2], clipv[i1], clipv[i0]};
  6.             bool isQuad = false;
  7.             tri extraTri;
  8.  
  9.             if(vc[0] || vc[1] || vc[2]) {
  10.                 if(vc[0] && vc[1] && vc[2])
  11.                     continue;
  12.                
  13.                 isQuad = (!vc[0] && (!vc[1] || !vc[2])) || (!vc[1] && !vc[2]);
  14.  
  15.                 int clipIn = !vc[0] &&  vc[1] ? 0 : (!vc[1] &&  vc[2] ? 1 : 2);
  16.                 int clipOt =  vc[0] && !vc[1] ? 0 : ( vc[1] && !vc[2] ? 1 : 2);
  17.                 v3 clipVec[2];
  18.  
  19.                 for(int ix=0; ix<2; ix++) {
  20.                    
  21.                     int iva = ix==0 ? (clipIn+1)%3 : clipOt;
  22.                     int ivb = ix==0 ? clipIn : (clipOt+1)%3;
  23.  
  24.                     float za = tr.v[iva].z;
  25.                     float zb = tr.v[ivb].z;
  26.                     float ip = 0;
  27.                     if(za != zb)
  28.                         ip = (zClip - za) / (zb - za);
  29.                    
  30.                     float zFac = zb / zClip;
  31.  
  32.                     clipVec[ix].mkClip(tr.v[iva], tr.v[ivb], ip, zFac);
  33.                 }
  34.  
  35.                 if(!isQuad)
  36.                     tr.v[(clipIn+1)%3] = clipVec[0], tr.v[clipOt] = clipVec[1];
  37.                 else {
  38.                     extraTri = tr;
  39.                     tr.v[(clipIn+1)%3] = clipVec[0];
  40.                     extraTri.v[clipIn] = clipVec[0];
  41.                     extraTri.v[clipOt] = clipVec[1];
  42.                 }
  43.                
  44.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement