ЯВА рисует арку с математической формулой - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно сделать упражнение на свинг Java.

  • Нарисуйте простой круг / шар (готово)
  • Переместить круг (сделано)
  • из начальной точки (половина jpanel (x), 0 (y)) переместите этот круг / шар, которые следуют направлению арки, и отскок, когда круг касается конца стороны экрана (в моем случае это окно только x : 0-300 у: 0-300, это очень маленькие окна) когда конец экрана (см. рисунок, который я привел ниже) продолжает подпрыгивать при движении арки вдоль боковых сторон экрана до тех пор, пока мяч не вернется в исходное положение, нет необходимости быть точно в исходном положении, но отскок должен быть бесконечным и непрерывным (извините за мой английский )

https://imgur.com/jNtxeld

Какая функция мне нужна для выполнения движения арки? я не могу использовать graphic2d или существующий класс в Java, мне нужна функция, чтобы подать заявку на x, y для перемещения этого шара

Я знаю формулу арки из математики, но я не знаю, как применить в Java в этом случае, я думаю, мне нужна функция для получения всех точек положения арки, а затем я могу применить к x и y для перемещения мяча .

помощь у меня есть этот код

public class Ani2 extends JPanel implements Runnable{

private final int DELAY =105;
public Ani2(){
    JFrame jf = new JFrame();
    jf.setSize(300,300);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.add(this);
    jf.setVisible(true);

}
private Thread animator;
int x=150, y=150;


@Override
public void addNotify() {
    super.addNotify();
    animator = new Thread(this);
    animator.start();
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(red);
    Graphics2D g2d = (Graphics2D)g;
    g2d.fillOval(x,y, 20, 20);
    g.dispose();
}


public static void main(String[] args) {
    new Ani2();
}

    @Override
    public void run() {
    long beforeTime, timeDiff, sleep;

    beforeTime = System.currentTimeMillis();

    while (true) {


         x += 1;
         y -= 1;


        repaint();

        timeDiff = System.currentTimeMillis() - beforeTime;
        sleep = DELAY - timeDiff;

        if (sleep < 0)
            sleep = 2;
        try {
            Thread.sleep(sleep);
        } catch (InterruptedException e) {
            System.out.println("interrupted");
        }

        beforeTime = System.currentTimeMillis();
    }
    }

}

1 Ответ

0 голосов
/ 02 апреля 2019

Я предполагаю, что "функция арки" означает физику.

Представьте, что ваш мяч сидит в покое на выступе на высоте h над поверхностью. Мяч имеет массу m; сила тяжести воздействует на шар, равный m*g в направлении вниз.

Уравнения движения мяча:

F = m*a

Это векторное уравнение, поскольку сила, ускорение, скорость и смещение являются векторными величинами.

Я могу использовать исчисление для определения расстояния, на которое мяч падает с высоты, после толчка в положительном направлении x (начальной скорости x).

Результатом будет квадратное уравнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...