【问题标题】:How to rotate an object 90 degrees around its center?如何将物体绕其中心旋转 90 度?
【发布时间】:2011-11-16 15:58:15
【问题描述】:

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

我对编程还是很陌生。很多时候,我会理解我需要做的事情背后的理论,但对如何实际实施它感到非常困惑。

谁能提供一个关于如何轮换组合的一般示例。围绕一个中心形状?

【问题讨论】:

    标签: java awt


    【解决方案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 - 只读第一部分(二维旋转)

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2013-06-30
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多