上节,我们讲了匀速运动,本节分享的运动就更有意思了:
- 加速运动
- 重力加速度
- 抛物线运动
- 摩擦力
加速运动:
1 <head>
2 <meta charset='utf-8' />
3 <style>
4 #canvas {
5 border: 1px dashed #aaa;
6 }
7 </style>
8 <script src="./ball.js"></script>
9 <script>
10 window.onload = function () {
11 var oCanvas = document.querySelector("#canvas"),
12 oGc = oCanvas.getContext('2d'),
13 width = oCanvas.width, height = oCanvas.height,
14 ball = new Ball( 0, height / 2 ),
15 vx = 0,
16 ax = 0.1;
17 (function linear() {
18 oGc.clearRect(0, 0, width, height);
19 ball.fill( oGc );
20 ball.x = vx;
21 vx = ax;
22 requestAnimationFrame(linear);
23 })();
24 }
25 </script>
26 </head>
27 <body>
28 <canvas id="canvas" width="1200" height="600"></canvas>
29 </body>
加速度分解与合成
1 <head>
2 <meta charset='utf-8' />
3 <style>
4 #canvas {
5 border: 1px dashed #aaa;
6 }
7 </style>
8 <script src="./ball.js"></script>
9 <script>
10 window.onload = function () {
11 var oCanvas = document.querySelector("#canvas"),
12 oGc = oCanvas.getContext('2d'),
13 width = oCanvas.width, height = oCanvas.height,
14 ball = new Ball( 0, 0 ),
15 a = 0.3,
16 ax = a * Math.cos( 25 * Math.PI / 180 ),
17 ay = a * Math.sin( 25 * Math.PI / 180 ),
18 vx = 0,
19 vy = 0;
20 (function linear() {
21 oGc.clearRect(0, 0, width, height);
22 ball.fill( oGc );
23 ball.x = vx;
24 ball.y = vy;
25 vx = ax;
26 vy = ay;
27 requestAnimationFrame(linear);
28 })();
29 }
30 </script>
31 </head>
32 <body>
33 <canvas id="canvas" width="1200" height="600"></canvas>
34 </body>
抛物线运动:
1 <head>
2 <meta charset='utf-8' />
3 <style>
4 #canvas {
5 border: 1px dashed #aaa;
6 }
7 </style>
8 <script src="./ball.js"></script>
9 <script>
10 window.onload = function () {
11 var oCanvas = document.querySelector("#canvas"),
12 oGc = oCanvas.getContext('2d'),
13 width = oCanvas.width, height = oCanvas.height,
14 ball = new Ball( 0, height / 2 ),
15 vy = -10,
16 vx = 5,
17 gravity = 0.2;
18 (function linear() {
19 oGc.clearRect(0, 0, width, height);
20 ball.fill( oGc );
21 ball.y = vy;
22 ball.x = vx;
23 vy = gravity;
24 requestAnimationFrame(linear);
25 })();
26 }
27 </script>
28 </head>
29 <body>
30 <canvas id="canvas" width="1200" height="600"></canvas>
31 </body>
重力弹跳:
1 <head>
2 <meta charset='utf-8' />
3 <style>
4 #canvas {
5 border: 1px dashed #aaa;
6 }
7 </style>
8 <script src="./ball.js"></script>
9 <script>
10 window.onload = function () {
11 var oCanvas = document.querySelector("#canvas"),
12 oGc = oCanvas.getContext('2d'),
13 width = oCanvas.width, height = oCanvas.height,
14 ball = new Ball( width / 2, 20 ),
15 vy = 0,
16 gravity = 0.2,
17 bounce = -0.6;
18 (function linear() {
19 oGc.clearRect(0, 0, width, height);
20 ball.fill( oGc );
21 ball.y = vy;
22 if ( ball.y > canvas.height - ball.radius ) {
23 ball.y = canvas.height - ball.radius;
24 vy *= bounce;
25 }
26 vy = gravity;
27 requestAnimationFrame(linear);
28 })();
29 }
30 </script>
31 </head>
32 <body>
33 <canvas id="canvas" width="1200" height="600"></canvas>
34 </body>
抛物线与重力弹跳运动
1 <head>
2 <meta charset='utf-8' />
3 <style>
4 #canvas {
5 border: 1px dashed #aaa;
6 }
7 </style>
8 <script src="./ball.js"></script>
9 <script>
10 window.onload = function () {
11 var oCanvas = document.querySelector("#canvas"),
12 oGc = oCanvas.getContext('2d'),
13 width = oCanvas.width, height = oCanvas.height,
14 ball = new Ball( 0, height ),
15 vy = -10,
16 vx = 5,
17 gravity = 0.2,
18 bounce = -0.8;
19 (function linear() {
20 oGc.clearRect(0, 0, width, height);
21 ball.fill( oGc );
22 ball.y = vy;
23 ball.x = vx;
24 if ( ball.y > canvas.height - ball.radius ) {
25 ball.y = canvas.height - ball.radius;
26 vy *= bounce;
27 }
28 vy = gravity;
29 requestAnimationFrame(linear);
30 })();
31 }
32 </script>
33 </head>
34 <body>
35 <canvas id="canvas" width="1200" height="600"></canvas>
36 </body>
摩擦力运动
1 <head>
2 <meta charset='utf-8' />
3 <style>
4 #canvas {
5 border: 1px dashed #aaa;
6 }
7 </style>
8 <script src="./ball.js"></script>
9 <script>
10 window.onload = function () {
11 var oCanvas = document.querySelector("#canvas"),
12 oGc = oCanvas.getContext('2d'),
13 width = oCanvas.width, height = oCanvas.height,
14 ball = new Ball( 0, height - 20 ),
15 vx = 20,
16 friction = 0.98;
17 (function linear() {
18 oGc.clearRect(0, 0, width, height);
19 ball.fill( oGc );
20 ball.x = vx;
21 vx *= friction;
22 requestAnimationFrame(linear);
23 })();
24 }
25 </script>
26 </head>
27 <body>
28 <canvas id="canvas" width="1200" height="600"></canvas>
29 </body>