Я пишу программу, которая имеет дело с движениями шара / частицы.Я хочу запрограммировать логику так, чтобы «горячие» шары перемещались между 4 и 6 см в секунду, а «холодные» шары - между 2 и 4 см в секунду.Как я могу использовать пиксели на см (113 / 2.54), где 113 - это разрешение экрана на дюйм, чтобы установить скорости?
Я просто использую фиксированное число для значений vx и vy дляшары.
Это мой конструктор Ball
public Ball(Side s, Color color) { //Side character used to determine if ball should spawn on left or right side.
//makeRandom method gives positive or negative direction for each ball
if (color == Color.RED){
this.vx = 8 * makeRandom();
this.vy = 8 * makeRandom();
} else {
this.vx = 5 * makeRandom();
this.vy = 5 * makeRandom();
}
speed = Math.sqrt(Math.pow(this.vx, 2)+Math.pow(this.vy, 2));
//position is randomized for each ball
if(s == Side.LEFT) {
this.x = leftSideBallX + (int) (50 * Math.random());
this.y = leftSideBallY + (int) (50 * Math.random());
} else {
this.x = rightSideBallX + (int) (50 * Math.random());
this.y = rightSideBallY + (int) (50 * Math.random());
}
}
, а это мой игровой цикл
@Override
public void run() {
running = true;
addParticlesToVector();
long start;
long elapsed;
long wait;
while (running) {
start = System.nanoTime();
gameUpdate();
this.repaint();
leftTemp.setText("Temperature: " + df.format(lTemp));
rightTemp.setText("Temperature: " + df.format(rTemp));
elapsed = (start - System.nanoTime());
wait = targetTime - elapsed/1000000;
try {
Thread.sleep(wait);
} catch (Exception e) {
e.printStackTrace();
}
}
}