私はJPanelで長方形を描画しようとしています。この長方形は、車の動きを模倣するために、平行移動してから回転します。長方形を平行移動および回転させることができましたが、(0,0)の原点を中心に回転します。Java GUIを初めて使用するため、長方形を移動および回転させることができたことを非常に嬉しく思いますが、長方形をさらに実験したため、長方形をそれ自体の周りで回転させる方法を理解できないようです。長方形を初期化し、45度回転させました。位置が変更されました。これは、rotateメソッドから追加された変換行列であると想定しています。
これをどのように解決するかをサイトで確認しましたが、長方形を回転させる方法しか見つかりませんでした。シミュレートされた車の動きのように回転したり移動したりする方法は見つかりませんでした。私はそれがその変換行列について懸念していると思いますが、私は推測しているだけです。だから私の質問は、どうすれば長方形を回転させて、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();
}