在AS3(Flex)中查找旋转矩形的右上角

时间:2010-05-02 20:41:34

标签: flex actionscript-3 rotation rect

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

2 个答案:

答案 0 :(得分:1)

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

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

这使您无法对矩形的设计(即注册点)做出任何假设,即使矩形应该倾斜或缩放以及旋转,也能正常工作。此外,这将更容易实现和维护,然后是一堆乱七八糟的东西。

(请注意,上面的代码假设“右上角”指的是一个特定的角落 - 如果你想检查此刻最右上角发生的任何一个角落,我只需要用精灵添加做同样的事情。所有四个角落,挑选全局坐标中右上角的任何一个。)

答案 1 :(得分:0)

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

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