Jave.Lin的专栏

简单而不平凡

AS3 没有2D向量类,自己随手写个简化版的先用着

用不着,叉乘、点乘,暂时写这么多,之前自己写的一个比较详细的,放在家了,目前要用这个简化版的:


package model
{
	/**
	 * 简化版向量类
	 * @author Jave.Lin
	 */	
	public class Vector2D
	{
		public var x:Number=0;
		public var y:Number=0;
		
		public function get length():Number
		{
			return Math.sqrt(x*x-y*y);
		}
		
		public function Vector2D($x:Number=0,$y:Number=0)
		{
			x=$x;
			y=$y;
		}
		
		public function multyRef(value:Number):void
		{
			x*=value;
			y*=value;
		}
		
		public function multy(value:Number):Vector2D
		{
			var v:Vector2D=new Vector2D(x,y);
			v.multyRef(value);
			return v;
		}
		
		public function devRef(value:Number):void
		{
			if(value==0)
			{
				//这里应该提示异常,但这里先不这样处理
				x=0;
				y=0;
				return;
			}
			x/=value;
			y/=value;
		}
		
		public function dev(value:Number):Vector2D
		{
			var v:Vector2D=new Vector2D(x,y);
			v.devRef(value);
			return v;
		}
		
		public function addRef(v:Vector2D):void
		{
			x+=v.x;
			y+=v.y;
		}
		
		public function add(v:Vector2D):Vector2D
		{
			var v:Vector2D=new Vector2D(x,y);
			v.addRef(v);
			return v;
		}
		
		public function subRef(v:Vector2D):void
		{
			x-=v.x;
			y-=v.y;
		}
		
		public function sub(v:Vector2D):Vector2D
		{
			var v:Vector2D=new Vector2D(x,y);
			v.sub(v);
			return v;
		}
		//单位化
		public function initializeRef():void
		{
			var len:Number=length;
			var rate:Number=1/len;
			x*=rate;
			y*=rate;
		}
		public function get initialize():Vector2D
		{
			var v:Vector2D=new Vector2D(x,y);
			v.initializeRef();
			return v;
		}
		//反向
		public function reverseRef():void
		{
			x*=-1;
			y*=-1;
		}
		
		public function reverse():Vector2D
		{
			var v:Vector2D=new Vector2D(x,y);
			v.reverseRef();
			return v;
		}
	}
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linjf520/article/details/7380595
文章标签: vector function class
个人分类: AS3
上一篇AS3 Keyboard的键值常量类
下一篇AS3 万有引力、反作用力
想对作者说点什么? 我来说一句

Vector2D.as

2016年05月03日 7KB 下载

没有更多推荐了,返回首页

关闭
关闭