Java 2D Graphics旋转对象保持原始coords系统?

时间:2015-01-17 22:05:07

标签: java rotation coordinates

我已经在互联网上到处搜索过这个主题,但没有。

我正在使用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();
}

0 个答案:

没有答案