JAVA用数学公式绘制拱形

问题描述 投票:0回答:1

我必须做一下java swing。

  • 画一个简单的圆/球(完成)
  • 移动一个圆圈(完成)
  • 从一个起点(jpanel(x)的一半,0(y))移动这个圆/球沿拱形方向移动并在圆圈触及屏幕一侧时反弹(在我的情况下,窗口只有x:0- 300 y:0-300,这是一个非常小的窗口)当屏幕结束时(见下面已经链接的图片)继续在屏幕两侧跟随拱形运动反弹,直到球返回到初始位置,不需要完全初始化位置但弹跳必须是无限的和连续的(对不起我的英语)

https://imgur.com/jNtxeld

做拱形运动需要什么功能?我不能在java中使用graphic2d或现有的类,我需要函数来申请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();
    }
    }

}
java math formula arch
1个回答
0
投票

我猜测“拱形功能”意味着物理学。

想象一下,你的球静止坐在表面上方高度为h的壁架上。球有质量m;重力在球上向下施加等于m*g的力。

球的运动方程是:

F = m*a

这是一个矢量方程,因为力,加速度,速度和位移都是矢量。

我可以使用微积分来解决球在正x方向(初始x速度)上推动后从高处落下的距离。

结果将是二次方程。

© www.soinside.com 2019 - 2024. All rights reserved.