/** * Calculates a vertical value for a quadratic function using Lagrange's from of the interpolation * polynomial The formula takes a flipped Y axis in consideration * * @param x the horizontal coordinate * @return a new value for Y */ private double calcY(double x) { double x0 = startPoint.getX(); double x1 = midPoint.getX(); double x2 = endPoint.getX(); double l0 = ((x - x1) * (x - x2)) / ((x0 - x1) * (x0 - x2)); double l1 = ((x - x0) * (x - x2)) / ((x1 - x0) * (x1 - x2)); double l2 = ((x - x0) * (x - x1)) / ((x2 - x0) * (x2 - x1)); return startPoint.getY() * l0 + midPoint.getY() * l1 + endPoint.getY() * l2; }
@Override public void fire( final Position shipPosition, final PlayerID playerId, final Rotation rotation, final float timeElapsed) { cooldown = cooldown - timeElapsed; if (cooldown < 0) { cooldown = cooldown + INIT_COOLDOWN; this.getBulletManager() .addBullet( new BasicBullet( shipPosition.getX(), shipPosition.getY(), BULLET_WIDTH, BULLET_HEIGHT, playerId, new Rotation(rotation.getAngle() + currentAngle), BULLET_DAMAGE)); currentAngle = currentAngle + ANGLE_STEP; } }