Hallo, und zwar habe ich folgende frage, mit der Klasse AffineTransform ist es in Java möglich Objekte zu rotieren, nun ist meine frage, kann ich damit auch das rotierte Objekt, wenn ich nur den wert der X Achse nach dem rotieren verändere, in die rotierte Richtung bewegen ?
----- Edit ------
Habe diesen ansatz, welcher schonmal etwas funktioniert, jedoch wenn ich nun das "Objekt" bewege, rotiert er nicht mehr um die eigene achse
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.AffineTransform;
public class Main extends JFrame implements KeyListener{
private int x = 100;
private int y = 100;
private int width = 100;
private int height = 100;
private double rota = 0;
public static void main(String[] args) {
Main frame = new Main();
frame.setSize(800,600);
frame.setVisible(true);
}
public Main() throws HeadlessException {
this.addKeyListener(this);
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
AffineTransform oldtrans = g2d.getTransform();
AffineTransform newtrans = new AffineTransform();
newtrans.setToIdentity();
newtrans.translate(x , y);
newtrans.rotate(Math.toRadians(rota), x - width / 2, y - height / 2);
g2d.setTransform(newtrans);
g2d.drawRect(0,0,width,height);
g2d.setTransform(oldtrans);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_LEFT)
{
x -= 10;
}
else if(e.getKeyCode() == KeyEvent.VK_RIGHT)
{
x += 10;
}
else if(e.getKeyCode() == KeyEvent.VK_UP)
{
y -= 10;
}
else if(e.getKeyCode() == KeyEvent.VK_DOWN)
{
y += 10;
}
else if(e.getKeyCode() == KeyEvent.VK_E)
{
rota += 10;
}
else if (e.getKeyCode() == KeyEvent.VK_Q)
{
rota -= 10;
}
this.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
|