All pastes #960922 Raw Edit

Stuff

public text v1 · immutable
#960922 ·published 2008-03-28 15:30 UTC
rendered paste body
		protected function collision(obj1:Object, obj2:Object, isStatic:Boolean = true):Object {
			/*
			 * Reverse the y coordinates, so that +y is in the up direction by subtracting from the application's height
			 * Initialize all other variables for ease of use later on
			 */
			var x1:Number = obj1.parent.x + obj1.parent.width/2;
			var y1:Number = obj1.parent.y + obj1.parent.height/2;
			var x2:Number = obj2.parent.x + obj2.parent.width/2;
			var y2:Number = obj2.parent.y + obj2.parent.height/2;
			var v1xi:Number = obj1.velocity.x;
			var v1yi:Number = obj1.velocity.y;
			var v2xi:Number = obj2.velocity.x;
			var v2yi:Number = obj2.velocity.y;
			var m1:Number = obj1.parent.mass;
			var m2:Number = obj2.parent.mass;
			
			trace("at_1: " + x1 + "," + y1 + " (" + obj1.parent.x + "," + obj1.parent.y + ")");
			trace("at_2: " + x2 + "," + y2 + " (" + obj2.parent.x + "," + obj2.parent.y + ")");
            trace("v_i: " + v2xi + "," + v2yi);
           	
           	var dy:Number = x2-x1;
           	var dx:Number = y2-y1;
           	var angle:Number = Math.atan2(dy, dx);
           	
           	// should always be true: if(dist < b1.rad + b2.rad) cause we're in hitTest
           	var cosa:Number = Math.cos(angle);
           	var sina:Number = Math.sin(angle);
           	var vx1p:Number = cosa*v1xi + sina*v1yi;
           	var vy1p:Number = cosa*v1yi - sina*v1xi;
           	var vx2p:Number = cosa*v2xi + sina*v2yi;
           	var vy2p:Number = cosa*v2yi - sina*v2xi;
           	var P:Number = vx1p*m1 + vx2p*m2;
           	var V:Number = vx1p - vx2p;
           	vx1p = (P-m2*V)/(m1+m2);
           	vx2p = V+vx1p;
           	obj2.velocity.x = cosa*vx2p - sina*vy2p;
           	obj2.velocity.y = cosa*vy2p + sina*vx2p;