反弹
1、先定义个横向的速度(speedX)和一个纵向速度(speedY)
2、再设置小球的运动轨迹
ball.style.left = ball.offsetLeft + speedX + "px";
ball.style.top = ball.offsetTop + speedY + "px";
边界反弹,并判断上下左右的最大和最小边界
最小边界为0,最大边界为窗口的宽高-小球的宽高
边界<0,便强制=0;边界>0,便强制等于最大边界
上下边界 : speedY *= -1
左右边界 : speedX *= -1
重力加速度
向上速度越来越慢,向下速度越来越快
1、先定义个横向的速度(speedX)和一个纵向速度(-speedY 向上运动)
2、再设置小球的运动轨迹
ball.style.left = ball.offsetLeft + speedX + "px";
ball.style.top = ball.offsetTop + speedY + "px";
边界反弹,并判断上下左右的最大和最小边界
最小边界为0,最大边界为窗口的宽高-小球的宽高
边界<0,便强制=0;边界>0,便强制等于最大边界
if( ball.offsetTop > maxT ){
ball.style.top = maxT + "px";
speedY *= -0.6; 由于小球落地后会有能量损耗,不能弹回原来的高度
由于能量损耗 横向速度越来越慢
speedX--;
if( speedX < 0 ){
clearInterval( timer );
}
}
speedY++; 重力加速度实现 speedY经过if循环之后已经改变了数值
圆周运动
1、先定义小球运动轨迹的半径(r) 和初始角度(deg)
2、再获取小球运动轨迹的圆心坐标
var centerPoint = {
x : ball.offsetLeft + ball.offsetWidth/2,
y : ball.offsetTop+ball.offsetHeight+r
}
3、设置小球的移动轨迹
ball.style.left = centerPoint.x + r*Math.cos(deg*Math.PI/180) + "px";
ball.style.top = centerPoint.y - r*Math.sin(deg*Math.PI/180)+"px";
deg-=3; 每次移动改变角度,从而形成圆周运动 顺时针正数,逆时针负数
椭圆周运动
1、先定义小球运动轨迹的短轴(a)和长轴(b) 和初始角度(deg)
2、再获取小球运动轨迹的圆心坐标
var centerPoint = {
x : ball.offsetLeft + ball.offsetWidth/2,
y : ball.offsetTop+ball.offsetHeight+a(躺着的椭圆)
y : ball.offsetTop+ball.offsetHeight+b(站着的椭圆)
}
3、设置小球的移动轨迹
ball.style.left = centerPoint.x + r*Math.cos(deg*Math.PI/180) + "px";
ball.style.top = centerPoint.y - r*Math.sin(deg*Math.PI/180)+"px";
deg-=3; 每次移动改变角度,从而形成圆周运动 顺时针正数,逆时针负数
️我还很喜欢你、就像sin²x+cos²x始终如一