Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package{
- public class LineVector3D{
- var points:Vector.<Number>;
- var magnitude:Number;
- var xyDir:Number;
- var xzDir:Number;
- var yzDir:Number;
- static function cos2(degree:Number):Number{
- if(degree >= 180 || degree <= -180)
- degree = (degree%180) - 180;
- return Math.cos(degree * Math.PI/180);
- }
- static function sin2(degree:Number):Number{
- if(degree >= 180 || degree <= -180)
- degree = (degree%180) - 180;
- return Math.sin(degree * Math.PI/180);
- }
- static function rangeT(... args):Boolean{
- for(var i:int = 0; i < args.length; i++)
- if(args[i] < 0 || args[i] > 1)
- return false;
- return true;
- }
- public function LineVector3D(mag:Number = 1, xyd:Number = 0, x:Number = 0,
- y:Number = 0, z:Number = 0, xzd:Number = 0, yzd:Number = 0){
- points = new <Number>[x, y, z];
- magnitude = mag;
- xyDir = xyd;
- xzDir = xzd;
- yzDir = yzd;
- }
- function xy_cos():Number{
- return magnitude * cos2(xyDir);
- }
- function xy_sin():Number{
- return magnitude * sin2(xyDir);
- }
- function xz_cos():Number{
- return magnitude * cos2(xzDir);
- }
- function xz_sin():Number{
- return magnitude * sin2(xzDir);
- }
- function yz_cos():Number{
- return magnitude * cos2(yzDir);
- }
- function yz_sin():Number{
- return magnitude * sin2(yzDir);
- }
- public function moveVector(dx:Number=0, dy:Number=0, dz:Number=0):void{
- points[0]+=dx;
- points[1]+=dy;
- points[2]+=dz;
- }
- public function setPoints(x:Number, y:Number, z:Number):void{
- points[0] = x;
- points[1] = y;
- points[2] = z;
- }
- public function collision(other:LineVector3D):Boolean{
- 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() ) );
- var vecXYtime2:Number = ( ( vecXYtime1 * xy_cos() ) + points[0] - other.points[0] )/other.xy_cos();
- 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() ) );
- var vecXZtime2:Number = ( ( vecXZtime1 * xz_cos() ) + points[0] - other.points[0] )/other.xz_cos();
- 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() ) );
- var vecYZtime2:Number = ( ( vecYZtime1 * yz_cos() ) + points[1] - other.points[1] )/other.yz_cos();
- return rangeT(vecXYtime1, vecXYtime2, vecXZtime1, vecXZtime2, vecYZtime1, vecYZtime2 );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement