Advertisement
NishimaQ

Untitled

Dec 12th, 2018
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     function computeCode(x, y){
  2.             x = parseInt(x);
  3.             y = parseInt(y);
  4.  
  5.             var code = INSIDE;
  6.             if(x < clip[0]){
  7.                 code |= LEFT;
  8.             }else if(x > clip[2]){
  9.                 code |= RIGHT;
  10.             }
  11.  
  12.             if(y < clip[1]){
  13.                 code |= BOTTOM;
  14.             }else if(y > clip[3]){
  15.                 code |= TOP;
  16.             }
  17.             return code;
  18.         }
  19.  
  20.         function clipping(){
  21.             for(var k = 0;k < loop;k++){
  22.                 var code1 = computeCode(xAwal[k], yAwal[k]);
  23.                 var code2 = computeCode(xAkhir[k], yAkhir[k]);                
  24.  
  25.                 console.log(code1);
  26.                 console.log(code2);
  27.  
  28.                 var x1 = parseInt(xAwal[k]), x2 = parseInt(xAkhir[k]), y1 = parseInt(yAwal[k]), y2 = parseInt(yAkhir[k]);
  29.  
  30.                 var accept = false
  31.                 while(true){
  32.                     temp = code1 & code2;
  33.                     if((code1 == 0) && (code2 == 0)){
  34.                         accept = true;
  35.                         break;
  36.                     }else if(temp){
  37.                         break;
  38.                     }else{
  39.                         var code_out;
  40.                         var x, y;
  41.  
  42.                         if(code1 != 0){
  43.                             code_out = code1;
  44.                         }else{
  45.                             code_out = code2;
  46.                         }
  47.  
  48.                         if(code_out & TOP){
  49.                             x = x1 + (x2 - x1) * (clip[3] - y1) / (y2 - y1);
  50.                             y = clip[3];
  51.                         }else if(code_out & BOTTOM){
  52.                             x = x1 + (x2 - x1) * (clip[1] - y1) / (y2 - y1);
  53.                             y = clip[1];
  54.                         }else if(code_out & RIGHT){
  55.                             y = y1 + (y2 - y1) * (clip[2] - x1) / (x2 - x1);
  56.                             x = clip[2];
  57.                         }else if(code_out & LEFT){
  58.                             y = y1 + (y2 - y1) * (clip[0] - x1) / (x2 - x1);
  59.                             x = clip[0];
  60.                         }
  61.  
  62.                         if(code_out == code1){
  63.                             xAwal[k] = x;
  64.                             yAwal[k] = y;
  65.                             code1 = computeCode(x, y);
  66.                         } else {
  67.                             xAkhir[k] = x;
  68.                             yAkhir[k] = y;
  69.                             code2 = computeCode(x, y);
  70.                         }
  71.                         console.log(x);
  72.                         console.log(y);
  73.                     }
  74.                 }
  75.  
  76.                 console.log(code1);
  77.                 console.log(code2);
  78.  
  79.                 if(!accept){
  80.                     xAwal[k] = 0;
  81.                     xAkhir[k] = 0;
  82.                     yAwal[k] = 0;
  83.                     yAkhir[k]= 0;
  84.                 }
  85.             }
  86.             document.getElementById('input-data').innerHTML = "";
  87.             drawAfterClipping();
  88.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement