Adapted from Robert Penner's Vector Class and change it into a AS2.0 Class file. Some of the changes included changing the original getLength(), setLength(), getAngle(), setAngle() methods into a class properties (vLength & angle).
Download Vector Class sample
var position:Vector = new Vector(5,5);
trace(position.vx); //output: 5
trace(position.vy); //output: 5
trace(position); //output: [5,5]
position.reset(2,3);
trace(position); //output: [2,3]
var velocity:Vector=position.clone();
trace(velocity); //output: [2,3]
trace(position.equal(velocity)); //output: true
position.plus(velocity);
trace(position); //output: [4,6]
var newPosition:Vector = position.plusNew(velocity);
trace(newPosition); //output: [6,9]
position.minus(velocity);
trace(position); //output: [2,3]
var newPosition:Vector = position.minusNew(velocity);
trace(newPosition); //output: [0,0]
velocity.reverse();
trace(velocity); //outpit: [-2,-3]
var dirction:Vector = velocity.reverseNew();
trace(direction); //output: [2,3]
var force:Vector=new Vector(3,2);
force.scale(2);
trace(force); //output: [6,4]
var gForce:Vector=force.scaleNew(-.5);
trace(gForce); //output: [-3,-2]
var speed:Number=velocity.vLength;
trace(speed); //output: 3.60555127546399
velocity.vLength=10;
trace(velocity); //output: [-5.54700196225229,-8.32050294337844]
position.reset(5,5);
var bearing:Number=position.angle;
trace(bearing); //output: 45
position.angle=180;
trace(position); //output: [-7.07106781186548,8.65927457071936e-16]
position.reset(5,5);
position.rotate(-90);
trace(position); //output: [-5,5]
var newDirection:Vector=position.rotateNew(90);
trace(newDirection); //output: [5,5]
var forceA:Vector=new Vector(2,3);
var forceB:Vector=new Vector(4,5);
trace(forceA.dot(forceB)); //output: 23
var wForce:Vector=gForce.normalNew();
trace(gForce); //output: [-3,-2]
trace(wForce); //output: [2,-3]
var goLeft:Vector=new Vector(3,0);
var goLeftNew:Vector=new Vector(5,0);
trace(goLeft.isPerp(goLeftNew)); //output: false
var goUp:Vector=new Vector(0,8);
trace(goLeft.isPerp(goUp)); //output: true
var theta:Number=forceA.angleBetween(forceB);
trace(theta); //output: 4.96974072811023
For more explanation on the Vector Class, their usage and derivation, refer to Robert Penner's Programming Macromedia Flash MX.
suggestion
|