уравнение
пролива линии составляет y=mx+c
.when вам нужно переместить объект между 2 точками, уравнение можно упростить y=mx
, так что вы можете найти м с помощью 2 points.and у зависит от й и equation.look на этой картине
попытаться изменить x1,y1 and x2,y2
и увидеть его перемещение через эту прямую линию. после того, как я просто напишу класс, чтобы вы могли легко запустить его.
public class AnimationJPanel extends JPanel {
//edit x1,y1 is starting point x2,y2 is end point
int x1=0;
int y1=0;
int x2=100;
int y2=100;
//
int x=x1;
int y;
int r=6;
int m=(y2-y1)/(x2-x1);
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
AnimationJPanel panel = new AnimationJPanel();
panel.setPreferredSize(new Dimension(400, 300));
panel.animate();
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
private Timer timer;
public AnimationJPanel() {
setBackground(Color.BLACK);
setForeground(Color.RED);
setOpaque(true);
}
public void animate() {
timer = new Timer(15, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(x>=x2){
timer.stop();//stop when pass the end point
}
x++;
y = m * x;
System.out.println("x" + x + " y" + y);
repaint();
}
});
timer.start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(x, y, r, r);
}
}
И что проблема? Покажите нам свой код. – Crozin
проливная линия y = mx + c. Вы можете найти m, а затем увеличить x ++. y будет увеличиваться согласно уравнению –
@Crozin В этом проблема. Я сосать по математике и пока еще не имеет кода для этого бита – TheScottymo