我必须做一下java swing。
做拱形运动需要什么功能?我不能在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();
}
}
}
我猜测“拱形功能”意味着物理学。
想象一下,你的球静止坐在表面上方高度为h
的壁架上。球有质量m
;重力在球上向下施加等于m*g
的力。
球的运动方程是:
F = m*a
这是一个矢量方程,因为力,加速度,速度和位移都是矢量。
我可以使用微积分来解决球在正x方向(初始x速度)上推动后从高处落下的距离。
结果将是二次方程。