Пример #1
0
  public void updateCabin(Cabin cabin, double accel, double deltaTime) {
    if (deltaTime > 0.2) return;
    double vi = cabin.getVelocity(), vf = vi + accel * deltaTime; // vf=vi+ a*dt
    if (Math.abs(vf) > 20) vf = 0d;
    double ds = 0.5 * deltaTime * (vf + vi);
    cabin.setPosition(
        cabin.getPosition() + ds); // sf=si+integral(dv=vf-vi)=si+dt*(vf-vi)=si+dt*(a*dt)=si+a*dt^2
    cabin.setVelocity(vf);

    double min = floors.get(FloorType.TENTH).getPosition(),
        max = floors.get(FloorType.UNDER_FIRST).getPosition();
    if (cabin.getPosition() > max) {
      cabin.setPosition(max);
    }
    if (cabin.getPosition() < min) {
      cabin.setPosition(min);
    }
  }