Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- proc vector LLDIS(vector $la,vector $lab,vector $lc,vector $lcd){
- vector $u = $la-$lc;
- float $a = dot($lab,$lab);
- float $b = dot($lab,$lcd);
- float $c = dot($lcd,$lcd);
- float $d = dot($lab,$u);
- float $e = dot($lcd,$u);
- //float $f = dot($u,$u);
- //平行数字小 不平行数字越来越大
- float $det = $a * $c - $b * $b;
- float $sNum;
- float $tNum;
- float $sDenom;
- float $tDenom;
- float $s;
- float $t;
- if($det < 0.001){
- $sNum= 0;
- $tNum=$e;
- $tDenom= $c;
- $sDenom = $det;
- }else{
- $sNum = $b*$e-$c*$d;
- $tNum = $a*$e-$b*$d;
- }
- $sDenom= $det;
- if($sNum < 0){
- $sNum =0;
- $tNum = $e;
- $tDenom = $c;
- }else if($sNum > $det){
- $sNum = $det;
- $tNum = $e + $b;
- $tDenom = $c;
- }else{
- $tDenom = $det;
- }
- if($tNum <0){
- $tNum =0;
- if( - $d < 0){
- $sNum =0;
- }else if (-$d >$a){
- $sNum = $sDenom;
- }else{
- $sNum = -$d;
- $sDenom = $a;
- }
- }else if ($tNum > $sDenom){
- $tNum = $tDenom;
- if((-$d+$b)<0){
- $sNum =0;
- }else if((-$d +$b) > $a){
- $sNum = $sDenom;
- }else{
- $sNum = -$d+$b;
- $sDenom = $a;
- }
- }
- if($sDenom != 0 ){
- $s = $sNum / $sDenom;
- }else{
- $s =0;
- }
- if($tDenom != 0){
- $t = $tNum / $tDenom;
- }else{
- $t =0;
- }
- vector $v = $la + ($s * $lab) - $lc + ($t*$lcd);
- return ($v);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement