Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1. proc vector LLDIS(vector $la,vector $lab,vector $lc,vector $lcd){
  2. vector $u = $la-$lc;
  3. float $a = dot($lab,$lab);
  4. float $b = dot($lab,$lcd);
  5. float $c = dot($lcd,$lcd);
  6. float $d = dot($lab,$u);
  7. float $e = dot($lcd,$u);
  8. //float $f = dot($u,$u);
  9. //平行数字小 不平行数字越来越大
  10. float $det = $a * $c - $b * $b;
  11. float $sNum;
  12. float $tNum;
  13. float $sDenom;
  14. float $tDenom;
  15. float $s;
  16. float $t;
  17.     if($det < 0.001){
  18.         $sNum= 0;
  19.         $tNum=$e;
  20.         $tDenom= $c;
  21.         $sDenom = $det;
  22.     }else{
  23.         $sNum = $b*$e-$c*$d;
  24.         $tNum = $a*$e-$b*$d;
  25.     }
  26.    
  27.     $sDenom= $det;
  28.     if($sNum < 0){
  29.         $sNum =0;
  30.         $tNum = $e;
  31.         $tDenom = $c;
  32.     }else if($sNum > $det){
  33.         $sNum = $det;
  34.         $tNum = $e + $b;
  35.         $tDenom = $c;
  36.     }else{
  37.         $tDenom = $det;
  38.     }
  39.    
  40.     if($tNum <0){
  41.         $tNum =0;
  42.         if( - $d < 0){
  43.             $sNum =0;
  44.         }else if (-$d >$a){
  45.             $sNum = $sDenom;
  46.         }else{
  47.             $sNum = -$d;
  48.             $sDenom = $a;
  49.         }
  50.     }else if ($tNum > $sDenom){
  51.         $tNum = $tDenom;
  52.         if((-$d+$b)<0){
  53.             $sNum =0;
  54.            
  55.         }else if((-$d +$b) > $a){
  56.             $sNum = $sDenom;
  57.            
  58.         }else{
  59.             $sNum = -$d+$b;
  60.             $sDenom = $a;
  61.         }
  62.     }
  63.    
  64.     if($sDenom != 0 ){
  65.         $s = $sNum / $sDenom;
  66.        
  67.     }else{
  68.         $s =0;
  69.     }
  70.     if($tDenom != 0){
  71.         $t = $tNum / $tDenom;
  72.        
  73.     }else{
  74.         $t =0;
  75.     }
  76.    
  77.    
  78.     vector $v =  $la + ($s * $lab) - $lc + ($t*$lcd);
  79.     return ($v);
  80.        
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement