b1 - 
l1 - 
b1.r- 
detx-   
dety- y  
l1.k- k  ,  
l1.b- b  ,  
l1.x-l1.y-  
(l1.x1-l1.y1)-(l1.x2-l1.y2)-   
b1.m-1/( )

function bldet(b1:Object,l1:Object) {
	l1.k=(l1.y2-l1.y1)/(l1.x2-l1.x1);
	l1.b=l1.y1-l1.k*l1.x1;
	var b:Number=b1.y+b1.x/l1.k;
	var detx:Number=((b-l1.b))/(1/l1.k+l1.k);
	var dety:Number=(-1/l1.k)*detx+b;
	var dis:Number=Math.sqrt((detx-b1.x)*(detx-b1.x)+(dety-b1.y)*(dety-b1.y));
	var dx:Number=Math.abs(l1.x2-l1.x1)*.5;
	if (dis<=b1.r) {
		if ((detx>=l1.x-dx) and (detx<=l1.x+dx)) {
			var normal:Object={};
			normal.vx=-b1.x+detx;
			normal.vy=-b1.y+dety;
			normalize(normal);//  
			E=(b1.e+l1.e)/2;
			if (b1.m>0) {
				if (l1.m>0) {
					r1x=detx-b1.x;
					r1y=dety-b1.y;
					r2x=detx-l1.x;
					r2y=dety-l1.y;
					z1=(normal.vy*r1x-normal.vx*r1y)*b1.i;
					z2=(normal.vy*r2x-normal.vx*r2y)*l1.i;
					E=(b1.e+l1.e)/2;
					j=normal.vx*(normal.vx*b1.m-r1y*z1+normal.vx*l1.m+r2y*z2)+normal.vy*(normal.vy*b1.m+r1x*z1*b1.i+normal.vy*l1.m-r2x*z2*l1.i);
					impulse=(-(1+E)*vab(normal,b1,l1,r1x,r1y,r2x,r2y))/j;
					if (impulse>0) {
						ap_impulse(b1,detx,dety,normal,-impulse);
						ap_impulse(l1,detx,dety,normal,impulse);
					}
				}
			}
		}
	}
}