| Index: chrome/test/data/perf/rendering/throughput/canvas2d_balls_common/bouncing_balls.js
|
| diff --git a/chrome/test/data/perf/rendering/throughput/canvas2d_balls_common/bouncing_balls.js b/chrome/test/data/perf/rendering/throughput/canvas2d_balls_common/bouncing_balls.js
|
| deleted file mode 100644
|
| index 89276b3fe03562f4d4f6676542d965111ec9c780..0000000000000000000000000000000000000000
|
| --- a/chrome/test/data/perf/rendering/throughput/canvas2d_balls_common/bouncing_balls.js
|
| +++ /dev/null
|
| @@ -1,176 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// demo parameters
|
| -// maybe overridden in test file
|
| -var numBalls = parseInt(getArgValue('ball_count'));
|
| -if (numBalls == 0 || isNaN(numBalls)) {
|
| - numBalls = 500;
|
| -}
|
| -var ballDiameter = 30;
|
| -var gravity = 0.5; //screen heights per second^2
|
| -var maxInitVelocity = 0.2;
|
| -var maxAngularVelocity = 5; // rad per second
|
| -var elasticity = 0.7;
|
| -var joltInterval = 1.5;
|
| -
|
| -// globals
|
| -var balls = [];
|
| -var canvasWidth;
|
| -var canvasHeight;
|
| -var borderX;
|
| -var borderY;
|
| -var timeOfLastJolt = 0;
|
| -
|
| -function include(filename) {
|
| - var head = document.getElementsByTagName('head')[0];
|
| - var script = document.createElement('script');
|
| - script.src = filename;
|
| - script.type = 'text/javascript';
|
| - head.appendChild(script)
|
| -}
|
| -
|
| -include("bouncing_balls_draw_ball_as_" + getArgValue('ball') + ".js");
|
| -include("bouncing_balls_draw_back_as_" + getArgValue('back') + ".js");
|
| -
|
| -window.requestAnimFrame = (function(){
|
| - return window.requestAnimationFrame ||
|
| - window.webkitRequestAnimationFrame ||
|
| - window.mozRequestAnimationFrame ||
|
| - window.oRequestAnimationFrame ||
|
| - window.msRequestAnimationFrame ||
|
| - function( callback ){
|
| - window.setTimeout(callback, 1000 / 60);
|
| - };
|
| -})();
|
| -
|
| -window.onload = init;
|
| -
|
| -function init(){
|
| - handleResize();
|
| - for (var i = 0; i < numBalls; i++) {
|
| - balls.push(new Ball());
|
| - }
|
| - window.addEventListener("resize", handleResize, false);
|
| - drawBallInit(ballDiameter); // externally defined
|
| - window.requestAnimFrame(updateFrame);
|
| -}
|
| -
|
| -function handleResize() {
|
| - canvasWidth = window.innerWidth;
|
| - canvasHeight = window.innerHeight;
|
| - canvas.setAttribute('width', canvasWidth);
|
| - canvas.setAttribute('height', canvasHeight);
|
| - borderX = ballDiameter/canvasWidth;
|
| - borderY = ballDiameter/canvasHeight;
|
| - prepareBackground(); // externally defined
|
| -}
|
| -
|
| -function updateFrame() {
|
| - var now = new Date().getTime() / 1000;
|
| - var jolt = false;
|
| - if (now - timeOfLastJolt > joltInterval) {
|
| - jolt = true;
|
| - timeOfLastJolt = now;
|
| - }
|
| - drawBackground(); // externally defined
|
| - for (var i = 0; i < numBalls; i++) {
|
| - balls[i].step(jolt);
|
| - }
|
| - window.requestAnimFrame(updateFrame);
|
| -}
|
| -
|
| -function Ball(){
|
| - var x = borderX + Math.random()*(1-2*borderX);
|
| - var y = borderY + Math.random()*(1-2*borderY);
|
| - var angle = Math.PI * 2 * Math.random();
|
| - var velocityY = Math.random()*maxInitVelocity*2 - maxInitVelocity;
|
| - var velocityX = Math.random()*maxInitVelocity*2 - maxInitVelocity;
|
| - var angularVelocity = Math.random()*maxAngularVelocity*2 -
|
| - maxAngularVelocity;
|
| - var previousFrameTime = new Date().getTime();
|
| - var previousBounceTime = 0;
|
| - var alive = true;
|
| - function step(jolt) {
|
| - var curTime = new Date().getTime();
|
| - var timeStep = (curTime - previousFrameTime) / 1000;
|
| - previousFrameTime = curTime;
|
| -
|
| - // handle balls that are no longer bouncing
|
| - if (!alive) {
|
| - if (jolt) {
|
| - // If a jolt is applied, bump the rollong balls enough for them to
|
| - // reach between 0.75x and 1x the height of the window
|
| - velocityY = -Math.sqrt(2 * gravity * (1-2 * borderY) * (0.75 + 0.25 *
|
| - Math.random()))
|
| - velocityX = Math.random()*maxInitVelocity*2 - maxInitVelocity;
|
| - angularVelocity = Math.random()*maxAngularVelocity*2 -
|
| - maxAngularVelocity;
|
| - alive = true;
|
| - } else {
|
| - // rolling on the ground
|
| - angularVelocity = 2*velocityX*canvasWidth/ballDiameter;
|
| - }
|
| - }
|
| -
|
| - // Compute angular motion
|
| - angle += timeStep*angularVelocity;
|
| - // Compute horizontal motion
|
| - var remainingTime = timeStep;
|
| - var deltaX = velocityX*remainingTime;
|
| - while ((x+deltaX) < borderX || (x+deltaX) > (1-borderX)){
|
| - if ((x+deltaX) < borderX) {
|
| - // left side bounce
|
| - remainingTime -= (borderX - x)/velocityX;
|
| - x = borderX;
|
| - } else {
|
| - // right side bounce
|
| - remainingTime -= ((1-borderX) - x)/velocityX;
|
| - x = 1 - borderX;
|
| - }
|
| - velocityX = -elasticity*velocityX;
|
| - deltaX = velocityX*remainingTime;
|
| - }
|
| - x += deltaX;
|
| -
|
| - // Compute vertical motion
|
| - remainingTime = timeStep;
|
| - var deltaY = alive ? velocityY*timeStep+gravity*timeStep*timeStep/2 : 0;
|
| - //Handle floor bounces
|
| - //To make sure the floor is air tight, we must be able to process multiple
|
| - //bounces per time step to avoid the "tunnel effect".
|
| - while ((y + deltaY) > (1 - borderY) && alive) {
|
| - // time to hit floor
|
| - var c = y-(1-borderY);
|
| - var b = velocityY;
|
| - var a = gravity/2;
|
| - // The greater root is always the right one
|
| - var subStep = (-b + Math.sqrt(b*b-4*a*c))/(2*a);
|
| - //velocity after floor hit
|
| - velocityY = -elasticity*(velocityY + gravity*subStep);
|
| - remainingTime -= subStep;
|
| - var bounceTime = curTime - remainingTime;
|
| - if (bounceTime - previousBounceTime < 0.005){
|
| - // The number of iterations may not be finite within a timestep
|
| - // with elasticity < 1. This is due to power series convergence.
|
| - // To gard against hanging, we treat the ball as rolling on the ground
|
| - // once time between bounces is less than 5ms
|
| - alive = false;
|
| - deltaY = 0;
|
| - } else {
|
| - deltaY = velocityY*remainingTime+gravity*remainingTime*remainingTime/2;
|
| - }
|
| - previousBounceTime = bounceTime;
|
| - y = (1 - borderY);
|
| - }
|
| - y += deltaY;
|
| - velocityY += gravity*remainingTime;
|
| -
|
| - drawBall(x * canvasWidth, y * canvasHeight, angle); // externally defined
|
| - }
|
| -
|
| - return {
|
| - step: step
|
| - }
|
| -}
|
|
|