Java 图像与图形旋转方向错误2d.rotate()
我的目标是在鼠标光标所在的任何位置都有一个图像面,下面是我获取旋转角度的代码(在我的Ship类中): 然后在我的JPanel上的绘制方法中: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(
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);