如何围绕中心旋转物体90度?

时间:2011-11-16 06:00:30

标签: java awt

我正在尝试为我的坠落物体(复合形状)设置旋转,以便每次在中心点周围按下一个键时它旋转90度。我想使用java.awt.Point库将我的复合形状中的一个指定为“旋转中心”,然后使用.Point位置来获得前一个点的位置,然后设置新的x和y位置...然后以某种方式设置新位置的新坐标。

我还是很喜欢编程。很多时候我会理解我需要做的事情背后的理论,但是真的很混淆如何实际实现它。

任何人都可以帮助解决如何旋转comp的一般示例。围绕一个中心的形状?

1 个答案:

答案 0 :(得分:1)

没有进入java Point实现,一般概念非常简单。

首先,您需要转换所有形状点,使形状的中心为(0,0)。 例如,如果中心(Cx,Cy)和其中一个点是(Px,Py),则新点应该是NewP =(Px - Cx,Py - Cy)。 现在,在所有点转换后,您应该为每个点执行以下操作。 假设您想要顺时针旋转90度(请查看下面的链接以了解如何进行其他旋转): RotatedP =( - NewPy,NewPx)

旋转后,您应该将点数转换回原始位置: FinalP =(RotatedPx - NewPx,RotatedPy - NewPy)。

一些伪代码:

Point p;
Center center;

Point relativePoint = p - center;

// For 90deg CW: -y, x
// For 90deg CC: y, -x
Point rotatedPoint = new Point(-1 * relativePoint.Y, relativePoint.X); // 90deg CW
Point finalPoint = rotatedPoint + center;

只需阅读一些有关转换和旋转的内容,它应该非常清楚: Rotations - 只读第一部分(二维旋转)

相关问题