我正在尝试在 JPanel 中绘制一个矩形,该矩形将平移然后自行旋转以模仿汽车的运动。我已经能够使矩形平移和旋转,但是它围绕(0,0)的原点旋转。我很高兴我能够让矩形移动和旋转,因为我对 Java GUI 很陌生,但我似乎不知道如何让矩形围绕自身旋转,因为我对它进行了更多实验,以及何时我初始化了矩形并将其旋转 45 度,它的位置发生了变化,我假设这是从旋转方法附加的变换矩阵。
我在网站上查看了如何解决这个问题,但是我只找到了如何旋转一个矩形,而不是如何像模拟汽车的运动一样旋转和移动。我认为它与它的变换矩阵有关,但我只是在推测。所以我的问题是我怎样才能让矩形能够旋转和移动,而不是靠在 JPanel 中的一个点上。
这是我到目前为止提出的代码:
public class Draw extends JPanel implements ActionListener {
private int x = 100;
private int y = 100;
private double theta = Math.PI;
Rectangle rec = new Rectangle(x,y,25,25);
Timer timer = new Timer(25,this);
Draw(){
setBackground(Color.black);
timer.start();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.white);
rec.x = 100;
rec.y = 100;
g2d.rotate(theta);
g2d.draw(rec);
g2d.fill(rec);
}
public void actionPerformed(ActionEvent e) {
x = (int) (x + (Math.cos(theta))*1);
y = (int) (y + (Math.sin(theta))*1);
theta = theta - (5*Math.PI/180);
repaint();
}