Java 如何将对象围绕其中心旋转90度?

Java 如何将对象围绕其中心旋转90度?,java,awt,Java,Awt,我正在尝试为我的坠落物体(一个复合形状)设置旋转,这样每当围绕中心点按下一个键时,它都会旋转90度。我想使用java.awt.Point库将我的复合形状的一个部分指定为“旋转中心”,然后使用.Point location to作为先前位置的点,然后设置新的x和y位置……然后以某种方式设置新位置的新坐标 我还是个编程新手。很多时候,我会理解我需要做的事情背后的理论,但却对如何实际实施感到困惑 有谁能帮我举一个关于如何轮换公司的一般例子吗。围绕中心的形状 在不涉及java点实现的情况下,一般概念非常

我正在尝试为我的坠落物体(一个复合形状)设置旋转,这样每当围绕中心点按下一个键时,它都会旋转90度。我想使用
java.awt.Point
库将我的复合形状的一个部分指定为“旋转中心”,然后使用.Point location to作为先前位置的点,然后设置新的x和y位置……然后以某种方式设置新位置的新坐标

我还是个编程新手。很多时候,我会理解我需要做的事情背后的理论,但却对如何实际实施感到困惑


有谁能帮我举一个关于如何轮换公司的一般例子吗。围绕中心的形状

在不涉及java点实现的情况下,一般概念非常简单

首先,需要变换所有形状点,使形状的中心为(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;
只要读一点关于变换和旋转的内容,您就会非常清楚: -只读第一部分(二维旋转)