Java 图像与图形旋转方向错误2d.rotate()

Java 图像与图形旋转方向错误2d.rotate(),java,image,rotation,Java,Image,Rotation,我的目标是在鼠标光标所在的任何位置都有一个图像面,下面是我获取旋转角度的代码(在我的Ship类中): 然后在我的JPanel上的绘制方法中: AffineTransform reset = new AffineTransform(); reset.rotate(0, 0, 0); g2d.rotate(ship.getOrientation(), ship.getX() + 26, ship.getY() + 26); g2d.drawImage(

我的目标是在鼠标光标所在的任何位置都有一个图像面,下面是我获取旋转角度的代码(在我的Ship类中):

然后在我的JPanel上的绘制方法中:

AffineTransform reset = new AffineTransform();
    reset.rotate(0, 0, 0);
    g2d.rotate(ship.getOrientation(), ship.getX() + 26,
            ship.getY() + 26);
    g2d.drawImage(ship.getImage(), ship.getX(), ship.getY(), this);
    g2d.setTransform(reset);

我的问题是,当我逆时针移动鼠标时,图像会顺时针旋转……有什么想法吗?

你试过反转角度吗?看一看,是的,我已经试过了,它很管用,但鉴于我的程序中有很多旋转图像,我希望能够理解为什么我的原始代码不管用,所以我不只是摆弄东西,直到它们管用为止。我可以看到两个不同的东西,1-你似乎在角度计算中遗漏了`-Math.PI/2`(
double angle=Math.atan2(centerY-mouseY,centerX-mouseX)-Math.PI/2;
和2-您没有反转结果
g2d.rotate(-ship.getOrientation(),ship.getX()+26,ship.getY()+26);
我现在有了
float angle=(float)-(Math.atan2(getY()-y,x-getX()))
它工作得很好,我的问题是为什么我需要反转角度?我想说这与
仿射变换
如何处理角度有关。例如,
图形
API中的一些方法从右侧开始0,逆时针移动,一些从顶部开始,顺时针移动……我想k他们就像让我们站起来一样;)
AffineTransform reset = new AffineTransform();
    reset.rotate(0, 0, 0);
    g2d.rotate(ship.getOrientation(), ship.getX() + 26,
            ship.getY() + 26);
    g2d.drawImage(ship.getImage(), ship.getX(), ship.getY(), this);
    g2d.setTransform(reset);