home *** CD-ROM | disk | FTP | other *** search
- function dist(x1, y1, x2, y2)
- {
- var output = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
- return output;
- }
- function normalizeVect(v)
- {
- var x = v.x / v.norm;
- var y = v.y / v.norm;
- var result = new tVector(x,y);
- return result;
- }
- function sumVect(v1, v2, v3)
- {
- var x = v1.x + v2.x + v3.x;
- var y = v1.y + v2.y + v3.y;
- var result = new tVector(x,y);
- return result;
- }
- function count(str, root)
- {
- if(root == undefined)
- {
- root = _root;
- }
- var num = 0;
- for(var i in root)
- {
- if(i.substr(0,str.length) == str)
- {
- var char = i.substr(str.length,1);
- if(!isNaN(char))
- {
- num++;
- }
- }
- }
- return num;
- }
- function addSpace(str)
- {
- var newStr;
- var count;
- var i;
- var char;
- str = str.toString();
- newStr = "";
- count = 0;
- i = str.length - 1;
- while(i >= 0)
- {
- char = str.charAt(i);
- count++;
- if(count == 3 && i != 0)
- {
- count = 0;
- char = "," + char;
- }
- newStr = char + newStr;
- i--;
- }
- return newStr;
- }
- function doWallCollision(wall, ball)
- {
- var x = ball.pos.x - wall.pos.x;
- var y = ball.pos.y - wall.pos.y;
- var dx = ball.pos.x - ball.oldPos.x;
- var dy = ball.pos.y - ball.oldPos.y;
- var angleRad = wall.angle;
- var cosAngle = Math.cos(angleRad);
- var sinAngle = Math.sin(angleRad);
- var x1 = cosAngle * x + sinAngle * y;
- var y1 = cosAngle * y - sinAngle * x;
- var dx1 = cosAngle * dx + sinAngle * dy;
- var dy1 = cosAngle * dy - sinAngle * dx;
- var vx1 = cosAngle * ball.vel.x + sinAngle * ball.vel.y;
- var vy1 = cosAngle * ball.vel.y - sinAngle * ball.vel.x;
- if(Math.abs(y1) < radius && dy1 > 0)
- {
- y1 = - radius;
- vy1 *= - bounce;
- x = cosAngle * x1 - sinAngle * y1;
- y = cosAngle * y1 + sinAngle * x1;
- ball.vel.x = cosAngle * vx1 - sinAngle * vy1;
- ball.vel.y = cosAngle * vy1 + sinAngle * vx1;
- ball.vel.x *= wall.strength;
- ball.vel.y *= wall.strength;
- ball.pos.x = x + wall.pos.x;
- ball.pos.y = y + wall.pos.y;
- }
- }
- function doPointCollision(point, ball)
- {
- var distBallPoint = dist(ball.pos.x,ball.pos.y,point.pos.x,point.pos.y);
- if(distBallPoint < radius + point.radius)
- {
- var end = new Position(point.pos.x,point.pos.y);
- var bv = new tVector(ball.vel.x,ball.vel.y);
- var bm = normalizeVect(new tVector(ball.pos.x - end.x,ball.pos.y - end.y));
- var fl = new tVector(bm.x * bv.norm * point.strength,bm.y * bv.norm * point.strength);
- var sum = sumVect(bv,bm,fl);
- ball.vel.x = sum.x;
- ball.vel.y = sum.y;
- }
- }
-