В этой программе я моделирую гравитацию.Все работает, но когда мяч больше не движется, он продолжает подпрыгивать на 1-5 пикселей в зависимости от установленного мной значения силы тяжести.Как я могу остановить мяч, когда энергия потеряна?Я хочу, чтобы xSpeed стал 0, а шар оставался в фиксированной позиции.
Редактировать: Гравитация варьируется от 1 до 100. Пользователь может изменять гравитацию.
energyLoss = 0,9 и dt = 0,2
// right and left wall collision
if (x + xSpeed > this.getWidth() - radius - 1) {
x = this.getWidth() - radius - 1;
xSpeed = -xSpeed;
} else if (x + xSpeed < 0 + radius) {
x = 0 + radius;
xSpeed = -xSpeed;
} else
x += xSpeed;
if (y == this.getHeight() - radius - 1) {
}
if (y > this.getHeight() - radius - 1) {
y = this.getHeight() - radius - 1;
ySpeed *= energyLoss;
ySpeed = -ySpeed;
// friction with the ground
xSpeed *= xFriction;
if (Math.abs(xSpeed) < .4)
xSpeed = 0;
} else {
ySpeed += gravity * dt; // velocity formula
y += ySpeed * dt + .5 * gravity * dt * dt; // position formula
}
repaint();