我已经在互联网上到处搜索过这个主题,但没有。
我正在使用JAVA进行编程,我正在JPanel中绘制一些形状,如黄色星星,屏幕中央有一种太空飞船。我的目的是让整个场景,除了在中心静止不动的宇宙飞船,当我按下某个按钮时,围绕中心(当然还有宇宙飞船)旋转。
现在,当我旋转星星时,我会让它们围绕中心点旋转,随着宇宙飞船的移动而改变,但是当我进行旋转时,坐标系统会发生变化,船只会对角移动,而我想要旋转场景保持可以垂直和水平移动飞船。
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
// RIEMPIMENTO SFONDO
g2.setColor(new Color(10, 10, 10));
g2.fillRect(0, 0, 1366, 768);
// DEBUGGER
g2.setColor(Color.WHITE);
g2.drawString("|" + posx + "|" + posy + "| " + scale, 1250, 758);
// TRASFORMAZIONE NAVICELLA
AffineTransform at = new AffineTransform();
at.translate(683, 384);
at.scale(scale, scale);
g2.setTransform(at);
AffineTransform backup = g2.getTransform();
// DISEGNO NAVICELLA
g2.setColor(Color.LIGHT_GRAY);
int[] xp = {0, -25, -25, 0, 25, 25};
int[] yp = {-25, 0, 25, 0, 25, 0};
g2.drawPolygon(xp, yp, 6);
// TRASFORMAZIONE SPAZIO
at.translate(posx, posy);
at.rotate(Math.toRadians(rotation), -posx, -posy);
g2.setTransform(at);
// DISEGNO SPAZIO
STAR(g2, 300 + posx, 100 + posy, 200, 200, Color.YELLOW);
STAR(g2, -100 + posx, -200 + posy, 200, 200, Color.YELLOW);
g2.dispose();
}