用Java在一个对象周围旋转

时间:2013-11-04 14:27:24

标签: java rotation

**


Goooglers 记得使用tx.setToRotation(Math.toRadians(angle));当使用Li的方法时。

**

我正在制作一种基于细胞的游戏,其中每个“有机体”由多个10x10像素的平方(细胞)组成,这些细胞必须连接到“主细胞”,否则它们将被移除。主单元格中包含一个表示其角度(0-360。)的int,当主单元格旋转时,它必须将所有连接的单元格与其对齐。例如吼叫

Cells rotated 0 degrees Cells rotated 120 degrees

我已经可以在这个角度绘制它们了,我只需要Cell的函数getX()和getY()来返回基于主单元旋转的修改后的X / Y.

给定主单元格角度(int角度),给定Cell(int xMod,int yMod)和当前位置(int x,int y)的偏移量可以为Cell返回一个getter和setter修改了X和Y以适应主细胞(所有者)的旋转?

1 个答案:

答案 0 :(得分:1)

查看AffineTransform类,它为各种转换提供了易于使用的方法,包括旋转。然后使用您的(x,y)值构造Point2D并应用AffineTransform以获取旋转的新Point2D。这很好,因为它的用法非常类似于您当前用于旋转图形上下文的内容。

AffineTransform tx = new AffineTransform();
tx.rotate(...);

Point2D point = new Point2D.Double(x, y);
Point2D rotated = new Point2D.Double();
tx.transform(point, rotated);

奖励:你可以使用变换进行渲染和计算!您可以在Graphics2D对象上应用AffineTransform以减少类似/重复的代码。

Graphics2D g = ...
g.transform(tx);