1

我有一个任意宽度和高度的矩形。我知道 X、Y、宽度和高度。矩形旋转N度时如何求解右上角坐标?我意识到如果它是轴对齐的,我只需解决 (x,y+width)。不幸的是,当我在矩形上应用变换矩阵以使其围绕其中心旋转时,这并不成立。

4

2 回答 2

1

让 Flash 的显示代码为您做这些事情通常是最简单和最快的。创建一个空的 Sprite 并将其放在矩形的显示对象中您要跟踪的角处。然后,在您选择的坐标空间中找到该精灵的位置:

var p:Point = new Point(0,0);
myRectangle.myCornerSprite.localToGlobal( p );
someDisplayObject.globalToLocal( p ); // for a coord space besides the stage

这使您无需对矩形的设计(即注册点)做出任何假设,并且即使矩形应该倾斜或缩放以及旋转也可以工作。另外,这将更容易实现和维护,然后是一堆余弦和诸如此类的东西。

(请注意,上面的代码假设“右上角”是指一个特定的角 - 如果您想检查此时发生在右上角的哪个角,我只需在所有四个角添加一个精灵做同样的事情,然后选择全局坐标中右上角的那个。)

于 2010-05-03T18:34:40.767 回答
0

您只需计算给定半径的圆上的点。矩形的中心将是圆的原点,任何角都将是圆的圆周上的一个点。您需要使用三角函数来计算使用旋转的新点。我现在没有时间解释这一切,但这里有一个我过去使用过的体面的 2D Javascript 库的链接,它应该可以为您提供所需的一切(请记住,数学实际上是相同的在 Javascript 和 ActionScript 中)自己解决。

http://jsdraw2d.jsfiction.com/viewsourcecode.htm

于 2010-05-03T00:03:03.520 回答