html5模擬平拋運(yùn)動(dòng)(模擬小球平拋運(yùn)動(dòng)過程)

字號(hào):


    物體以一定的初速度沿水平方向拋出,如果物體僅受重力作用,這樣的運(yùn)動(dòng)叫做平拋運(yùn)動(dòng)。平拋運(yùn)動(dòng)可看作水平方向的勻速直線運(yùn)動(dòng)以及豎直方向的自由落體運(yùn)動(dòng)的合運(yùn)動(dòng)。平拋運(yùn)動(dòng)的物體,由于所受的合外力為恒力,所以平拋運(yùn)動(dòng)是勻變速曲線運(yùn)動(dòng),平拋物體的運(yùn)動(dòng)軌跡為一拋物線。平拋運(yùn)動(dòng)是曲線運(yùn)動(dòng) 平拋運(yùn)動(dòng)的時(shí)間僅與拋出點(diǎn)的豎直高度有關(guān);物體落地的水平位移與時(shí)間(豎直高度)及水平初速度有關(guān)。
    代碼如下:
    <html>
    <head>
    <meta charset=utf-8>
    <title>html5炮彈</title>
    <script>
    //box
    var box_x=0;
    var box_y=0;
    var box_width=300;
    var box_height=300;
    //ball
    var ball_x=10;
    var ball_y=10;
    var ball_radius=10;
    var ball_vx=10;
    var ball_vy=0;
    //constant
    var g=10;//note
    var rate=0.9;
    //bound
    var bound_left=box_x+ball_radius;
    var bound_right=box_x+box_width-ball_radius;
    var bound_top=box_y+ball_radius;
    var bound_bottom=box_y+box_height-ball_radius;
    //context
    var ctx;
    function init()
    {
    ctx=document.getElementById('canvas').getContext('2d');
    ctx.lineWidth=ball_radius;
    ctx.fillStyle="rgb(200,0,50)";
    move_ball();
    setInterval(move_ball,100);
    }
    function move_ball()
    {
    ctx.clearRect(box_x,box_y,box_width,box_height);
    move_and_check();
    ctx.beginPath();
    ctx.arc(ball_x,ball_y,ball_radius,0,Math.PI*2,true);
    ctx.fill();
    ctx.strokeRect(box_x,box_y,box_width,box_height);
    }
    function move_and_check()
    {
    var cur_ball_x=ball_x+ball_vx;
    var temp=ball_vy;
    ball_vy=ball_vy+g;
    var cur_ball_y=ball_y+ball_vy+g/2;
    if(cur_ball_x<bound_left)
    {
    cur_ball_x=bound_left;
    ball_vx=-ball_vx*0.9;
    ball_vy=ball_vy*0.9;
    }
    if(cur_ball_x>bound_right)
    {
    cur_ball_x=bound_right;
    ball_vx=-ball_vx*0.9;
    ball_vy=ball_vy*0.9;
    }
    if(cur_ball_y<bound_top)
    {
    cur_ball_y=bound_top;
    ball_vy=-ball_vy*0.9;
    ball_vx=ball_vx*0.9;
    }
    if(cur_ball_y>bound_bottom)
    {
    cur_ball_y=bound_bottom;
    ball_vy=-ball_vy*0.9;
    ball_vx=ball_vx*0.9;
    }
    ball_x=cur_ball_x;
    ball_y=cur_ball_y;
    }
    </script>
    </head>
    <body onLoad="init()">
    <canvas id="canvas" width="400" height="400"/>
    </body>
    </html>
    html5模擬小球平拋運(yùn)動(dòng)過程。