Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package{
  2.    
  3.     public class LineVector3D{
  4.        
  5.         var points:Vector.<Number>;
  6.         var magnitude:Number;
  7.         var xyDir:Number;
  8.         var xzDir:Number;
  9.         var yzDir:Number;
  10.        
  11.         static function cos2(degree:Number):Number{
  12.            
  13.             if(degree >= 180 || degree <= -180)
  14.                 degree = (degree%180) - 180;
  15.            
  16.             return Math.cos(degree * Math.PI/180);
  17.         }
  18.        
  19.         static function sin2(degree:Number):Number{
  20.            
  21.             if(degree >= 180 || degree <= -180)
  22.                 degree = (degree%180) - 180;
  23.            
  24.             return Math.sin(degree * Math.PI/180);
  25.         }
  26.        
  27.         static function rangeT(... args):Boolean{
  28.            
  29.             for(var i:int = 0; i < args.length; i++)
  30.                 if(args[i] < 0 || args[i] > 1)
  31.                     return false;
  32.             return true;
  33.         }
  34.        
  35.         public function LineVector3D(mag:Number = 1, xyd:Number = 0, x:Number = 0,
  36.                 y:Number = 0, z:Number = 0, xzd:Number = 0, yzd:Number = 0){
  37.            
  38.             points = new <Number>[x, y, z];
  39.             magnitude = mag;
  40.             xyDir = xyd;
  41.             xzDir = xzd;
  42.             yzDir = yzd;
  43.         }
  44.        
  45.         function xy_cos():Number{
  46.             return magnitude * cos2(xyDir);
  47.         }
  48.        
  49.         function xy_sin():Number{
  50.             return magnitude * sin2(xyDir);
  51.         }
  52.        
  53.         function xz_cos():Number{
  54.             return magnitude * cos2(xzDir);
  55.         }
  56.        
  57.         function xz_sin():Number{
  58.             return magnitude * sin2(xzDir);
  59.         }
  60.        
  61.         function yz_cos():Number{
  62.             return magnitude * cos2(yzDir);
  63.         }
  64.        
  65.         function yz_sin():Number{
  66.             return magnitude * sin2(yzDir);
  67.         }
  68.        
  69.         public function moveVector(dx:Number=0, dy:Number=0, dz:Number=0):void{
  70.             points[0]+=dx;
  71.             points[1]+=dy;
  72.             points[2]+=dz;
  73.         }
  74.        
  75.         public function setPoints(x:Number, y:Number, z:Number):void{
  76.             points[0] = x;
  77.             points[1] = y;
  78.             points[2] = z;
  79.         }
  80.        
  81.         public function collision(other:LineVector3D):Boolean{
  82.            
  83.             var vecXYtime1:Number = ( ( ( (points[0] - other.points[0])/other.xy_cos() ) * other.xy_sin() ) + other.points[1] - points[1] )/( xy_sin() - ( ( xy_cos() * other.xy_sin() )/other.xy_cos() ) );
  84.            
  85.             var vecXYtime2:Number = ( ( vecXYtime1 * xy_cos() ) + points[0] - other.points[0] )/other.xy_cos();
  86.            
  87.             var vecXZtime1:Number = ( ( ( (points[0] - other.points[0])/other.xz_cos() ) * other.xz_sin() ) + other.points[2] - points[2] )/( xz_sin() - ( ( xz_cos() * other.xz_sin() )/other.xz_cos() ) );
  88.            
  89.             var vecXZtime2:Number = ( ( vecXZtime1 * xz_cos() ) + points[0] - other.points[0] )/other.xz_cos();
  90.            
  91.             var vecYZtime1:Number = ( ( ( (points[1] - other.points[1])/other.yz_cos() ) * other.yz_sin() ) + other.points[2] - points[2] )/( yz_sin() - ( ( yz_cos() * other.yz_sin() )/other.yz_cos() ) );
  92.            
  93.             var vecYZtime2:Number = ( ( vecYZtime1 * yz_cos() ) + points[1] - other.points[1] )/other.yz_cos();
  94.            
  95.             return rangeT(vecXYtime1, vecXYtime2, vecXZtime1, vecXZtime2, vecYZtime1, vecYZtime2 );
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement