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

Apache flex 在AS3(Flex)中查找旋转矩形的右上角点,apache-flex,actionscript-3,rotation,rect,Apache Flex,Actionscript 3,Rotation,Rect,我有一个任意宽度和高度的矩形。我知道X,Y,宽度和高度。当矩形旋转N度时,如何求解右上角坐标?我意识到如果它是轴对齐的,我只需要解(x,y+宽度)。不幸的是,当我在矩形上应用变换矩阵使其围绕其中心旋转时,这并不成立。您只需计算给定半径的圆上的点。矩形的中心将是圆的原点,任何一个角都将是圆圆周上的一个点。您需要使用三角学来使用旋转计算新点。我现在没有时间解释所有这些,但这里有一个链接,指向我过去使用过的一个不错的2D Javascript库,它应该为您提供所需的一切(请记住,Javascript和

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

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


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


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

var p:Point = new Point(0,0);
myRectangle.myCornerSprite.localToGlobal( p );
someDisplayObject.globalToLocal( p ); // for a coord space besides the stage
这使您不再对矩形的设计(即注册点)进行任何假设,即使矩形应该倾斜或缩放以及旋转,它也可以工作。此外,这将更容易实现和维护,然后是一堆余弦之类的东西


(请注意,上面的代码假设“右上角”指的是一个特定的角点-如果您想检查当前位于最右上角的角点,我只需在所有四个角点添加一个精灵,并选择全局坐标中位于右上角的角点。)让Flash的显示代码为您完成这类工作通常是最简单、最快的。创建一个空精灵,并将其放在矩形显示对象中要跟踪的角落处。然后,在您选择的坐标空间中找到该精灵的位置:

var p:Point = new Point(0,0);
myRectangle.myCornerSprite.localToGlobal( p );
someDisplayObject.globalToLocal( p ); // for a coord space besides the stage
这使您不再对矩形的设计(即注册点)进行任何假设,即使矩形应该倾斜或缩放以及旋转,它也可以工作。此外,这将更容易实现和维护,然后是一堆余弦之类的东西


(请注意,上面的代码假设“右上角”指的是一个特定的角点-如果您想查看当前位于最右上角的角点,我只需在所有四个角点添加一个精灵,并选择位于全局坐标中右上角的角点即可。)

当然,这还取决于矩形的注册点在哪里。当然,这也取决于矩形的注册点在哪里。