动量守恒计算

package cn.d
{
import flash.display.Sprite;
import flash.events.Event;

public class Billiard1 extends Sprite
{
private var ball10:Ball;
private var ball11:Ball

public function Billiard1()
{

init();
}

private function init():void
{

ball10=new Ball(20);
ball10.x=50;
ball10.y=stage.stageHeight/2;
ball10.mass=2;
ball10.vx=1;

this.addChild(ball10)

ball11=new Ball(30);
ball11.x=300;
ball11.y=stage.stageHeight/2;
ball11.mass=1;
ball11.vx=-1;

this.addChild(ball11)

this.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}

private function onEnterFrame(e:Event):void
{
ball10.x+=ball10.vx;
ball11.x+=ball11.vx;

var dic:Number=ball11.x-ball10.x;

if(Math.abs(dic)<ball10.radius+ball11.radius)
{
var v0:Number=((ball10.mass-ball11.mass)*ball10.vx+2*ball11.mass*ball11.vx)/(ball10.mass+ball11.mass);
var v1:Number=((ball11.mass-ball10.mass)*ball11.vx+2*ball10.mass*ball10.vx)/(ball10.mass+ball11.mass);

ball10.vx=v0;
ball11.vx=v1;

ball10.x+=ball10.vx;
ball11.y+=ball11.vy;

}
}
}
}

 

posted @ 2012-02-29 20:45  ndljava  阅读(202)  评论(0编辑  收藏  举报